recuento de SQL () ayuda con una instrucción select
Pregunta
Estoy usando este código:
SELECT MACH_NO,
COUNT(MACH_NO) AS TOTAL_REPORTS
FROM MAINTENANCE_LOG
GROUP BY MACH_NO;
... para recuperar algunos datos que da:
MACH_NO TOTAL_REPORTS
----------------------
1 4
5 2
8 1
7 1
¿Cómo puedo recuperar sólo cuando los informes totales es más grande que tres? Probé:
WHERE TOTAL_REPORTS > 3
... pero no dice
ORA-00904: "TOTAL_REPORTS": inválido identificador
Solución
Dado que usted ha utilizado un GROUP BY
, se debe utilizar en lugar de HAVING
WHERE
. También es necesario utilizar explícitamente COUNT(MACH_NO)
en lugar de su alias de TOTAL_REPORTS
.
Así HAVING COUNT(MACH_NO) > 3
uso, en lugar de 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;
Otros consejos
TIENE CLÁUSULA
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 DE MAINTENANCE_LOG GROUP BY MACH_NO
having count(mach_no) > 3
En lugar de DONDE TOTAL_REPORTS> 3, tratan el Conde (MACH_NO)> 3.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow