如何通过 SQL 查询找到组结果的平均值?
Posted
技术标签:
【中文标题】如何通过 SQL 查询找到组结果的平均值?【英文标题】:How do I find the average of the result of a group by SQL query? 【发布时间】: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 作为开始吗?
【问题讨论】:
【参考方案1】:您不需要子查询:
select count(*) / count(distinct storageID) as avg_per_storageID
from Inventory ;
平均值是项目总数除以storageID
s 的数量。
【讨论】:
【参考方案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
【讨论】:
以上是关于如何通过 SQL 查询找到组结果的平均值?的主要内容,如果未能解决你的问题,请参考以下文章