2010-04-26 4 views
1

Я использую этот код:граф SQl() помочь с оператором выбора

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

ответ

3

Поскольку вы использовали 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; 
+0

Больших работы благодаря многих – 2010-04-26 08:26:59

+0

Ive никогда раньше не использовали, имеющую оговорку, не удивительно, не смог прогресс – 2010-04-26 08:29:30

-1

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

1

Использование HAVING ПУНКТА

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

вы чуть были его, спасибо тыс – 2010-04-26 08:28:14

0

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

+0

Благодаря этим работало Aswell – 2010-04-26 08:27:15