如何在SQL中按两列分组并计算平均值与样本数量?
问题解决:为分组SQL查询添加样本数量统计列
原始数据表结构
x y z a ab 2 a ab 4 a ac 4 b ab 6 b ab 4 b ad 8 c ac 10 c ac 10
期望查询结果
x y avg_z number_of_sample a ab 3 2 a ac 4 1 b ab 5 2 b ad 8 1 c ac 10 2
当前已写SQL语句
SELECT x, y, AVG(z) AS avg_z FROM table1 GROUP BY x, y
解决方案
只需在SELECT语句中添加COUNT(*)函数统计每组样本数量,将其命名为number_of_sample即可。完整SQL如下:
SELECT x, y, AVG(z) AS avg_z, COUNT(*) AS number_of_sample FROM table1 GROUP BY x, y
说明
COUNT(*)会统计分组内的所有行数量,不受z列是否为空的影响;若仅需统计z列非空的行数,可替换为COUNT(z)。- 由于已按
x和y分组,COUNT(*)会自动匹配分组逻辑,计算每个分组对应的样本总数。
内容的提问来源于stack exchange,提问作者Tmiskiewicz
相关产品推荐
相关产品推荐

