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

如何在MySQL中对临时表执行计算,获取按周分组聚合后的列平均值

按周分组二次求平均值的SQL实现方案

原有语句错误原因

你当前的SQL执行逻辑是先对每行数据计算amount/div,再按周分组求单行列值的平均值,和需求的计算顺序完全不符,因此无法得到预期结果。
需求的计算顺序为:

  • 按week字段分组,分别对amount、div两个字段求和
  • 计算每个分组的「求和后amount/求和后div」得到周维度比值
  • 对所有周的维度比值求平均值

正确实现代码

通用子查询写法(兼容所有SQL数据库)

SELECT ROUND(AVG(week_ratio), 2) AS final_result
FROM (
    SELECT SUM(amount)/SUM(div) AS week_ratio
    FROM mytable
    GROUP BY week
) AS week_calc;

CTE写法(适用于支持公共表表达式的数据库,如MySQL8.0+、PostgreSQL、SQL Server等)

WITH week_calc AS (
    SELECT SUM(amount)/SUM(div) AS week_ratio
    FROM mytable
    GROUP BY week
)
SELECT ROUND(AVG(week_ratio), 2) AS final_result
FROM week_calc;

执行上述语句即可直接得到保留两位小数的预期结果8.77。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:24:03