【问题标题】:count Query in sqlsql中的count查询
【发布时间】:2011-05-12 07:21:19
【问题描述】:

我的查询有问题

第一个表(主)名称:带有字段(Category_id,Category_name)的MainCategory

第二个表(交易)名称:带有字段(Incident_id、Category_id、主题、描述)的事件

我想查询表Transation中category_id的出现次数

例如结果可以是

Category_name   Number_of_Faults

Hardware          10
Software          22
Network           17

谢谢

库马尔

【问题讨论】:

    标签: sql count subquery sum


    【解决方案1】:

    试试这个:

    SELECT a.Category_Name, COUNT(b.Incident_Id) Number_of_Faults
    FROM MainCategory a JOIN Incident b
    ON a.Category_id = b.Category_id
    GROUP BY a.Category_Name
    

    【讨论】:

    • 在许多 RDBM 系统中,必须写:GROUP BY a.Category_id, a.Category_Name
    • @ypercube:你是对的,但 OP 没有告诉我们他使用的是哪种 SQL 类型......所以我尝试了这个,相信它可能是正确的。谢谢:)
    • @Marco:大多数 RDBMS 将拒绝此 GROUP BY,因为它与 SELECT 列表不匹配。 IIRC,只有 MySQL 允许这种歧义
    • @Marco:之前没有错。但它只适用于支持包含(在选择列表中)在功能上依赖于分组列表中的字段的字段的系统(如 MySQL)。
    • @gbn:当a.Category_id 是主键并且(因此)a.Category_name 在功能上依赖于它时,这并没有歧义。
    【解决方案2】:

    试试这个。您需要 LEFT JOIN 来处理给定类别的“无事件”

    SELECT
        M.Category_Name,
        COUNT(I.Category_id) AS Number_of_Faults
    FROM
        MainCategory M
        LEFT JOIN
        Incident I ON M.Category_id = I.Category_id
    GROUP BY
        M.Category_name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-26
      • 2011-12-11
      • 1970-01-01
      • 1970-01-01
      • 2020-02-12
      • 2013-12-15
      • 2021-10-28
      • 2019-01-04
      相关资源
      最近更新 更多