Вопрос

Я использую этот код:

  SELECT MACH_NO, 
         COUNT(MACH_NO) AS TOTAL_REPORTS
    FROM MAINTENANCE_LOG
GROUP BY MACH_NO;

... Чтобы получить некоторые данные, которые дают:

MACH_NO  TOTAL_REPORTS
----------------------
1        4
5        2
8        1
7        1

Как я могу получить только там, где общие отчеты больше, чем три? Я старался:

WHERE TOTAL_REPORTS > 3 

... но это говорит

ORA-00904: «Total_Reports»: неверный идентификатор

Это было полезно?

Решение

Так как вы использовали GROUP BY, вы должны использовать HAVING скорее, чем WHERE. Отказ Вам также нужно явное использовать COUNT(MACH_NO) а не псевдоним TOTAL_REPORTS.

Так использовать HAVING COUNT(MACH_NO) > 3, скорее, чем WHERE TOTAL_REPORTS > 3.

SELECT MACH_NO, 
       COUNT(MACH_NO) AS TOTAL_REPORTS 
FROM MAINTENANCE_LOG 
GROUP BY MACH_NO
HAVING COUNT(MACH_NO) > 3;

Другие советы

Использовать Иметь ПУНКТ

SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO HAVING TOTAL_REPORTS > 3;

Выберите Mach_no, count (mach_no) как total_reports из teanning_log group by mach_nohaving count(mach_no) > 3

Вместо того, где Total_Reports> 3, попробуйте откуда (Mach_no)> 3.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top