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

按ID与月份分区,满足Cat='low'时计算Hours×WorkingDaysInMonth聚合值的SQL问题

符合需求的SQL实现方案

没问题,这就帮你修正SQL来实现需求:你需要在窗口函数的聚合逻辑里加入条件判断,只对Cat='low'的行计算Hours×WorkingDaysInMonth的乘积并求和,同时保持按ID和Month分区的逻辑。这里用CASE WHEN就能完美实现这个过滤:

修正后的完整SQL

SELECT 
    ID,
    Hours,
    Cat,
    Month,
    WorkingDaysInMonth,
    SUM(CASE WHEN Cat = 'low' THEN Hours * WorkingDaysInMonth ELSE 0 END) 
        OVER (PARTITION BY ID, Month) AS TESTING
FROM TABLEA;

关键逻辑说明

  • 条件过滤:通过CASE WHEN Cat = 'low' THEN Hours * WorkingDaysInMonth ELSE 0 END,仅当Cat为low时计算乘积,非目标行返回0(不会影响SUM的最终结果);如果你希望非目标行的TESTING字段显示为NULL,可以把ELSE 0改成ELSE NULL,SUM会自动忽略NULL值,最终聚合结果一致。
  • 分区保持:保留你原有的PARTITION BY ID, Month,确保每个ID+Month的分组下单独计算聚合值。

示例验证

假设你的TABLEA有以下数据:

IDHoursCatMonthWorkingDaysInMonth
150low20180320
135low20180320
140high20180320
225low20180422

运行上述SQL后,TESTING列的结果会是:

IDHoursCatMonthWorkingDaysInMonthTESTING
150low201803201700
135low201803201700
140high201803201700
225low20180422550

可以看到,只有Cat='low'的行参与了聚合计算,且同一ID+Month分组下的所有行都显示相同的聚合结果,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:17:49