SQl count () поможет с оператором выбора - PullRequest
1 голос
/ 26 апреля 2010

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

  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": неверный идентификатор

Ответы [ 4 ]

3 голосов
/ 26 апреля 2010

Поскольку вы использовали 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;
1 голос
/ 26 апреля 2010

Использование ИМЕЕТ CLAUSE

SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO HAVING TOTAL_REPORTS > 3;
0 голосов
/ 26 апреля 2010

ВЫБРАТЬ MACH_NO, COUNT (MACH_NO) AS TOTAL_REPORTS ОТ MAINTENANCE_LOG GROUP BY MACH_NO having count(mach_no) > 3

0 голосов
/ 26 апреля 2010

Вместо WHERE TOTAL_REPORTS> 3, попробуйте WHERE COUNT (MACH_NO)> 3.

...