SQl count() help with a select statement
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.
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论