如何修改SQL查询,添加列展示月度销售Grand Total
修改SQL查询新增月度销售总计列
原查询仅筛选了701分店的销售数据,且缺少月度销售总计列。要实现需求,我们可以利用窗口函数来计算每个月度的总销售额,同时保留各分店的明细数据:
SELECT CONCAT(MONTH(date), '-', YEAR(date)) AS month, branch, SUM(total) AS total, SUM(SUM(total)) OVER (PARTITION BY CONCAT(MONTH(date), '-', YEAR(date))) AS grand_total FROM BRANCH_SALES WHERE date BETWEEN '20220101' AND '20220131' GROUP BY CONCAT(MONTH(date), '-', YEAR(date)), branch ORDER BY total;
关键修改说明:
- 移除原查询中
branch = '701'的筛选条件,确保返回所有分店的月度销售数据 - 使用窗口函数
SUM(SUM(total)) OVER (...):外层SUM用于对分组后的分店销售额再次求和,PARTITION BY指定按月度分组,从而得到对应月份的总销售额 - 保留原有的分组和排序逻辑,保证结果结构符合预期
预期输出结果:
| month | branch | total | grand total |
|---|---|---|---|
| 01-2022 | 701 | 2345 | 7845 |
| 01-2022 | 702 | 4000 | 7845 |
| 01-2022 | 703 | 1500 | 7845 |
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

