Domanda

Sto usando questo codice:

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

... per recuperare alcuni dati che dà:

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

Come posso recuperare solo quando i rapporti totale è maggiore di tre? Ho provato:

WHERE TOTAL_REPORTS > 3 

... ma si dice

  

ORA-00904: "TOTAL_REPORTS": non valido identificativo

È stato utile?

Soluzione

Dal momento che hai usato un GROUP BY, è necessario utilizzare HAVING piuttosto che WHERE. È inoltre necessario utilizzare in modo esplicito COUNT(MACH_NO) piuttosto che l'alias di TOTAL_REPORTS.

Quindi l'uso HAVING COUNT(MACH_NO) > 3, piuttosto che 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;

Altri suggerimenti

CHE HA CLAUSOLA

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

Selezionare MACH_NO, COUNT (MACH_NO) AS TOTAL_REPORTS DA MAINTENANCE_LOG GROUP BY MACH_NO having count(mach_no) > 3

Invece di DOVE TOTAL_REPORTS> 3, cercano DOVE COUNT (MACH_NO)> 3.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top