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

GROUP BY结果补全小时行缺口 按site_id分组无关联字段问题求助

实现思路

你需要先构造所有待统计站点 + 所有统计时段的全量维度笛卡尔积,再左联交易统计结果即可实现需求,每个站点的所有时段都会生成记录,无交易的时段统计值自动补0。

改造后SQL示例

SELECT
    s.site_id,
    gh,
    IFNULL(d.count, 0) AS `count`
-- 生成统计周期内的全量小时序列
FROM UNNEST(GENERATE_TIMESTAMP_ARRAY('2021-08-10 00:00:00', '2021-08-17 23:59:59', INTERVAL 1 HOUR)) as gh
-- 笛卡尔积关联所有需要统计的站点,得到每个站点对应的全量小时基准行
CROSS JOIN (
    -- 可替换为独立站点维度表的查询,避免漏掉统计周期内无交易的站点
    SELECT DISTINCT site_id FROM `transactions`
) s
-- 左关联按站点+小时聚合的交易统计结果
LEFT JOIN (
    SELECT
        site_id,
        TIMESTAMP_TRUNC(DATI, HOUR) hour,
        COUNT(*) `count`
    FROM `transactions`
    WHERE DATE(DATI) >= "2021-08-10"
    AND PMP IS NOT NULL
    AND (QTY IS NULL OR QTY = 0)
    GROUP BY site_id, hour
) d ON d.hour = gh AND d.site_id = s.site_id
ORDER BY s.site_id, gh

关键说明

  • 站点列表如果有独立的站点维度表,建议替换SELECT DISTINCT site_id FROM transactions子查询,避免统计周期内完全没有交易的站点被遗漏
  • 子查询的GROUP BY需要同时指定site_id和hour,保证统计结果是每个站点每小时的交易笔数
  • 左关联时需要同时匹配小时和站点ID,才能正确将交易统计值对应到对应站点的对应时段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 05:51:01