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

如何编写SQL查询生成各WeekNo对应所有Id的完整统计数据?

解决方案

这是个很常见的补全维度数据的需求嘛,核心就是先构建出所有WeekNo和T1.Id的完整组合,再关联实际数据补全count值,直接给你写好SQL,再拆解下逻辑:

SELECT 
    w.WeekNo,
    t1.Id,
    COALESCE(t2.count, 0) AS count
FROM 
    (SELECT DISTINCT WeekNo FROM T2) w
CROSS JOIN 
    T1
LEFT JOIN 
    T2 ON w.WeekNo = T2.WeekNo AND t1.Id = T2.Id
ORDER BY 
    w.WeekNo, t1.Id;

逻辑拆解:

  • 提取所有周号:子查询(SELECT DISTINCT WeekNo FROM T2)会把T2里存在的所有不重复周号提取出来,避免重复生成相同周的记录。
  • 生成全量组合:CROSS JOIN T1会把每个周号和T1里的所有Id进行两两组合,这一步就能得到每个周对应所有5个Id的基础数据集,保证不会漏掉任何一个Id的记录。
  • 关联实际数据:LEFT JOIN T2用周号和Id作为关联条件,把全量组合和T2的实际数据关联起来——没有匹配到的记录,T2的count字段会返回NULL。
  • 替换空值为0:COALESCE(t2.count, 0)函数会把NULL值替换成0,完美符合你要求的“无对应数据时count显示为0”的需求。
  • 排序:最后用ORDER BY w.WeekNo, t1.Id让结果按周号升序、Id升序排列,和你给出的预期输出顺序完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 09:52:47