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

¿Fue útil?

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
scroll top