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

MySQL:按两列分组获取所有日期与地点组合的统计结果

原数据表

DateLocationsum
Jun, 1Location 11
Jun, 2Location 21
Jun, 3Location 11

目标结果表

DateLocationsum
Jun, 1Location 11
Jun, 1Location 20
Jun, 2Location 10
Jun, 2Location 21
Jun, 3Location 11
Jun, 3Location 20

实现方案

可以通过交叉连接生成所有日期-地点组合,再左连接原表补全数据,用COALESCE将空值替换为0,具体SQL语句如下:

SELECT 
    d.Date,
    l.Location,
    COALESCE(t.sum, 0) AS sum
FROM 
    (SELECT DISTINCT Date FROM your_table) d
CROSS JOIN 
    (SELECT DISTINCT Location FROM your_table) l
LEFT JOIN 
    your_table t ON d.Date = t.Date AND l.Location = t.Location
ORDER BY 
    d.Date, l.Location;

逻辑说明

  1. 两个子查询分别提取原表中所有唯一的日期和地点;
  2. CROSS JOIN生成日期与地点的所有可能组合;
  3. LEFT JOIN关联原表,保留所有组合记录,原表无对应数据时sum字段会返回NULL;
  4. COALESCE(t.sum, 0)将NULL替换为0;
  5. ORDER BY保证结果按日期、地点排序,与目标表结构一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:39:19