문제

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 identifier

도움이 되었습니까?

해결책

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.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top