1

我正在使用这段代码:

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

...检索一些数据,这些数据给出:

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

如何仅在总报告大于三个的情况下检索?我试过:

WHERE TOTAL_REPORTS > 3 

...但它说

ORA-00904: "TOTAL_REPORTS": 标识符无效

4

4 回答 4

3

由于您使用了 a GROUP BY,因此您应该使用HAVING而不是WHERE. 您还需要明确使用COUNT(MACH_NO)而不是您的别名TOTAL_REPORTS.

所以使用HAVING COUNT(MACH_NO) > 3,而不是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;
于 2010-04-26T07:44:57.367 回答
1

使用HAVING CLAUSE

SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO HAVING TOTAL_REPORTS > 3;
于 2010-04-26T07:44:33.123 回答
0

SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS 从 MAINTENANCE_LOG GROUP BY MACH_NO having count(mach_no) > 3

于 2010-04-26T07:44:48.520 回答
-1

而不是 WHERE TOTAL_REPORTS > 3,尝试 WHERE COUNT(MACH_NO) > 3。

于 2010-04-26T07:42:45.620 回答