如何编写带GROUP BY的MySQL查询:求和并追加关联统计列
如何在MySQL查询中按用户分组并统计指定日期的销量?
你可以通过条件聚合实现需求,在现有查询基础上添加两个带CASE判断的SUM()函数即可,完整SQL如下:
SELECT user, SUM(products_sold) AS total_sold, SUM(CASE WHEN day = 'Tuesday' THEN products_sold ELSE 0 END) AS tuesday_total, SUM(CASE WHEN day = 'Thursday' THEN products_sold ELSE 0 END) AS thursday_total FROM sales GROUP BY user ORDER BY total_sold DESC;
逻辑说明:
- 用
CASE语句筛选对应日期的销售记录,仅对符合条件的products_sold进行求和; - 加入
ELSE 0是为了保证用户没有对应日期的销售数据时,返回0而非默认的NULL,完全匹配你期望的结果格式; - 保留了你原有的分组和排序逻辑,无需调整分组规则。
执行该查询后,会得到目标结果:
user | total_sold | tuesday_total | thursday_total Bob | 17 | 10 | 7 Randy | 12 | 0 | 12
内容的提问来源于stack exchange,提问作者Derek Conjar
相关产品推荐
相关产品推荐

