I'm using this code:
SELECT MACH_NO,
COUNT(MACH_NO) AS TOTAL_REPORTS
FROM MAINTENANCE_LOG
GROUP BY MACH_NO;
...to retrieve some data which gives:
MACH_NO TOTAL_REPORTS
----------------------
1 4
5 2
8 1
7 1
How can I retrieve only where total reports is bigger than three? I tried:
WHERE TOTAL_REPORTS > 3
...but it says
ORA-00904: "TOTAL_REPORTS": invalid identifie开发者_运维问答r
Since you've used a GROUP BY, you should use HAVING rather than WHERE. You also need to explicitly use COUNT(MACH_NO) rather than your alias of TOTAL_REPORTS.
So use HAVING COUNT(MACH_NO) > 3, rather than 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;
Use HAVING CLAUSE
SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO HAVING TOTAL_REPORTS > 3;
SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO
having count(mach_no) > 3
Instead of WHERE TOTAL_REPORTS > 3, try WHERE COUNT(MACH_NO) > 3.
加载中,请稍侯......
精彩评论