Frage

Ich verwende diesen Code:

  SELECT MACH_NO, 
         COUNT(MACH_NO) AS TOTAL_REPORTS
    FROM MAINTENANCE_LOG
GROUP BY MACH_NO;

... einige Daten abzurufen, die gibt:

MACH_NO  TOTAL_REPORTS
----------------------
1        4
5        2
8        1
7        1

Wie kann ich nur abrufen, wenn die Gesamt Berichte größer als drei? Ich habe versucht:

WHERE TOTAL_REPORTS > 3 

... aber es sagt,

ORA-00904: "TOTAL_REPORTS": ungültige Kennung

War es hilfreich?

Lösung

Da Sie eine GROUP BY verwendet haben, sollten Sie HAVING statt WHERE verwenden. Sie müssen auch explizit COUNT(MACH_NO) verwenden, anstatt Ihren Alias ??TOTAL_REPORTS.

So verwenden HAVING COUNT(MACH_NO) > 3 statt 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;

Andere Tipps

Verwenden Sie MIT KLAUSEL

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

Statt WHERE TOTAL_REPORTS> 3, versuchen WHERE COUNT (MACH_NO)> 3.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top