SQL Count () Справка с оператором выбора
Вопрос
Я использую этот код:
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.
Не связан с StackOverflow