count SQL () aiuto con un'istruzione select
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
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.