如何在单个SQL查询中添加多组IN条件并汇总年初至今时间区间数据
SQL查询修改实现方案
核心实现逻辑
- 产品分组统计:使用
CASE WHEN自定义产品分组规则,你可以根据实际业务需求调整每组匹配的product_long_desc取值 - 多时间维度统计:通过条件聚合在同一句查询中同时返回单周(原需求2021-07-25)、年初至今(YTD,2021-01-01至2021-07-25)两个维度的销售额
修改后完整SQL
SELECT -- 自定义产品分组,可根据实际业务调整分组规则 CASE WHEN A.product_long_desc IN ('GENERAL MILLS CHEERIOS 260GM') THEN '分组1:原味系列' WHEN A.product_long_desc IN ('GENERAL MILLS CHEERIOS HONEY NUT 330 GM', 'GENERAL MILLS CHEERIOS HONEY NUT BOX 292GM') THEN '分组2:蜂蜜坚果系列' WHEN A.product_long_desc IN ('GENERAL MILLS CHEERIOS MULTIGRAIN 265GM') THEN '分组3:多谷物系列' -- 剩下2组可按业务需求补充匹配规则,示例如下 WHEN A.product_long_desc IN ('补充产品名称1') THEN '分组4:自定义系列1' WHEN A.product_long_desc IN ('补充产品名称2') THEN '分组5:自定义系列2' ELSE '其他' END AS product_group, -- 原需求单周销售额统计 SUM(CASE WHEN fiscal_week_end_dt = '2021-07-25 00:00:00' THEN Sales_dollar_amt ELSE 0 END) AS week_20210725_sales, -- 新增YTD销售额统计,时间范围2021-01-01至2021-07-25 SUM(CASE WHEN fiscal_week_end_dt BETWEEN '2021-01-01 00:00:00' AND '2021-07-25 00:00:00' THEN Sales_dollar_amt ELSE 0 END) AS ytd_2021_sales FROM srm.nielsen_pos_volumetric_causal_distribution_ca_weekly_combined AS A WHERE -- 所有需要统计的产品都放在此处IN列表中 A.product_long_desc IN ( 'GENERAL MILLS CHEERIOS 260GM', 'GENERAL MILLS CHEERIOS HONEY NUT 330 GM', 'GENERAL MILLS CHEERIOS HONEY NUT BOX 292GM', 'GENERAL MILLS CHEERIOS MULTIGRAIN 265GM' -- 补充其他分组需要统计的产品名称 ) AND market_long_desc = 'LCL NATIONAL' -- 时间范围放宽到YTD最大区间,减少数据扫描范围 AND fiscal_week_end_dt BETWEEN '2021-01-01 00:00:00' AND '2021-07-25 00:00:00' -- 按自定义产品分组聚合 GROUP BY product_group;
补充说明
如果不需要按分组拆分、只需要所有产品的整体统计,去掉CASE WHEN的分组逻辑和GROUP BY语句即可,两个求和字段会直接返回全量产品的单周和YTD总销售额。
内容的提问来源于stack exchange,提问作者Debojyoti Patra
相关产品推荐
相关产品推荐

