You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在含GROUP BY和ORDER BY的SQL查询中计算平均值?

嘿,我来帮你理清这个问题~你的原查询是按location_id分组统计每个地点的问题数量,现在要加入平均值计算,主要分两种常见场景,我分别给你说明:

场景1:计算每个分组内某字段的平均值

如果你想统计每个location_id下,issues表中某个数值字段(比如priority优先级、resolve_days解决时长这类)的平均值,直接在SELECT语句里添加AVG(字段名)即可,GROUP BY依然按location_id分组,ORDER BY可以根据需求调整:

SELECT 
  location_id,
  COUNT(id) AS tcount,
  AVG(your_numeric_column) AS avg_field_value -- 替换成你实际要计算平均值的字段
FROM issues 
GROUP BY location_id 
ORDER BY tcount DESC;

⚠️ 小提示:AVG()函数仅对数值型字段有效,字符串、日期这类类型不能直接用它计算哦。

场景2:计算所有分组统计结果的平均值

如果你的需求是先得到每个地点的问题数量(也就是原查询的tcount结果),再计算这些数量的整体平均值,可以用两种方式实现:

方法1:子查询单独获取整体平均值

先通过子查询生成每个分组的tcount列表,再在外层计算平均值:

-- 仅输出所有分组tcount的平均值
SELECT AVG(tcount) AS overall_avg_tcount
FROM (
  SELECT COUNT(id) AS tcount 
  FROM issues 
  GROUP BY location_id
) AS grouped_counts;

方法2:窗口函数同时展示分组数据和整体平均值

如果想在结果里同时看到每个分组的tcount和所有分组的平均tcount,用窗口函数AVG() OVER()会更高效直观:

SELECT 
  location_id,
  COUNT(id) AS tcount,
  AVG(COUNT(id)) OVER() AS overall_avg_tcount -- 窗口函数计算所有分组的平均值
FROM issues 
GROUP BY location_id 
ORDER BY tcount DESC;

这种写法会在每一行结果里都显示整体的平均问题数,方便你对比单个地点和整体水平的差异。

内容的提问来源于stack exchange,提问作者shekwo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:14:02