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

SQL按分组取每组首行并关联获取去年同期数据的实现咨询

实现方案

实现逻辑:先提取每个商户的最新基准数据,再基于基准数据的年月匹配去年同期的同商户同月份数据,最后合并两类数据即可,天然兼容无同期数据的场景。

可直接运行的SQL代码如下:

WITH dataset AS (...), -- 你的原有数据集生成逻辑保持不变
latest_data AS (
    -- 提取每个business_id的最新数据作为匹配基准
    SELECT * FROM dataset WHERE row_num = 1
)
-- 输出所有最新数据
SELECT * FROM latest_data
UNION ALL
-- 输出匹配到的去年同期数据
SELECT d.* 
FROM dataset d
INNER JOIN latest_data l 
    ON d.business_id = l.business_id 
    AND d.year = l.year - 1 
    AND d.month = l.month
-- 可选排序:保证同商户的最新数据、同期数据相邻展示
ORDER BY business_id, year DESC, month DESC

逻辑说明:

  • latest_data CTE复用了你已实现的取最新数据的逻辑,作为匹配同期的基准
  • UNION ALL前半部分输出全量最新数据,后半部分仅输出匹配到的同期数据,没有匹配结果自动不输出,无需额外处理无同期的场景
  • 如果你数据集内存在同商户同年同月多条数据的情况,可以在关联后的筛选逻辑中补充去重规则(比如仅取同期数据里的最高row_num/最低row_num),按你给出的示例数据,上述代码可直接得到你预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:06:02