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

如何在同一结果集中计算月度求和值的平均值

问题描述

我有一张包含dateTime和quantity字段的operation表,表结构及示例数据如下:

dateTimequantity
2024-01-011
2024-02-052

我已经实现了按月分组统计quantity总和的SQL语句:

SELECT MONTH(o1.dateTime), SUM(o1.quantity)
FROM operation o1
WHERE o1.dateTime between '2024-01-01' and '2024-12-31'
GROUP BY MONTH(o1.dateTime)

现在需要在同一结果表中,同时展示月度求和值以及所有月度求和值的年度平均值,预期结果如下:

MonthSUM(quantity)AVG(XXX)
0118601648
0218991648
0316771648
0421661648
0515761648
0617181648
0721441648
088721648
099241648
解决方案

直接使用窗口函数AVG() OVER ()即可实现需求,无需额外子查询或表连接,修改后的SQL如下:

SELECT 
    MONTH(o1.dateTime) AS Month,
    SUM(o1.quantity) AS `SUM(quantity)`,
    AVG(SUM(o1.quantity)) OVER () AS `AVG(XXX)`
FROM operation o1
WHERE o1.dateTime BETWEEN '2024-01-01' AND '2024-12-31'
GROUP BY MONTH(o1.dateTime)

逻辑说明

  • SUM(o1.quantity)先按月份分组计算出每个月的quantity总和
  • AVG(SUM(o1.quantity)) OVER ()会在分组后的结果集上,计算所有月度总和的平均值,并将该值填充到结果的每一行中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 07:33:27