【问题标题】: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;
    

    【讨论】:

    • 从来没用过having子句,难怪进不去
    【解决方案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。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多