【问题标题】:SQl count() help with a select statementSQL count() 帮助选择语句
【发布时间】:2010-04-26 07:36:04
【问题描述】:
我正在使用此代码:
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”:标识符无效
【问题讨论】:
标签:
sql
oracle
oracle10g
ora-00904
【解决方案1】:
由于您使用了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;
【解决方案2】:
使用HAVING子句
SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO HAVING TOTAL_REPORTS > 3;
【解决方案3】:
SELECT MACH_NO, COUNT(MACH_NO) AS TOTAL_REPORTS FROM MAINTENANCE_LOG GROUP BY MACH_NO
having count(mach_no) > 3
【解决方案4】:
尝试 WHERE COUNT(MACH_NO) > 3,而不是 WHERE TOTAL_REPORTS > 3。