【问题标题】:How do I find the average of the result of a group by SQL query?如何通过 SQL 查询找到组结果的平均值?
【发布时间】:2021-05-03 02:24:18
【问题描述】:

所以假设我从一个名为 Inventory 的表开始,如下所示,其中每个非唯一存储 ID 有多个唯一项目:

ItemID StorageID
453 100
234 100
642 150
234 200
343 200
143 200

我根据其存储 ID 对项目进行分组,因此它会产生下表 - (select itemID, storageID from Inventory group by storageID)

ItemID StorageID
453, 234 100
642 150
234, 343, 143 200

但这是我坚持的部分:我想返回一个数字结果,表示每个存储的平均项目数。因此,这将涉及计算每个不同存储的项目数(即: storageID 100 有 2 个项目, storageID 200 有 3 个项目),然后找到平均值。因此,在我分享的示例中,平均值为 (2+1+3)/3 = 2.67 件/存储。 我怎么能查询MySQL呢?我什至需要使用 group by 作为开始吗?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    您不需要子查询:

    select count(*) / count(distinct storageID) as avg_per_storageID
    from Inventory ;
    

    平均值是项目总数除以storageIDs 的数量。

    【讨论】:

      【解决方案2】:

      你可以使用group by如下:

      select avg(cnt) as average_
      (select count(*) as cnt
        from your_table t
       group by storageid) t
      

      【讨论】:

        【解决方案3】:

        对您的数据进行分组并在每个组上使用count()

        select avg(cnt)
        from
        (
          select count(*) as cnt, storageID 
          from Inventory 
          group by storageID
        ) tmp
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-11-02
          • 1970-01-01
          • 1970-01-01
          • 2012-08-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多