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

SQL如何基于category和month字段分组创建计算列RA

回答

这个需求完全可以用SQL实现,用窗口函数就能搞定,不需要复杂的多表关联。

核心逻辑

  • 把原表的MDY字段重命名为输出要求的category
  • 按MDY、month两个字段做分区,对每个分区内的Oa、Sa、Ai分别求和
  • 做除法前先判断分区内Ai总和是否为0,为0直接返回0避免除零错误,否则按公式计算RA,结果保留2位小数即可和示例输出对齐

参考SQL

假设原表表名为your_table,代码如下:

SELECT
  Oa,
  Sa,
  Ai,
  month,
  MDY AS category,
  ROUND(
    CASE WHEN SUM(Ai) OVER (PARTITION BY MDY, month) = 0 THEN 0
    ELSE (SUM(Oa) OVER (PARTITION BY MDY, month) + SUM(Sa) OVER (PARTITION BY MDY, month)) / SUM(Ai) OVER (PARTITION BY MDY, month)
    END,
  2) AS RA
FROM your_table;

结果验证

拿你举的J302022、Jan分组举例:

  • 分区内Oa总和:5+16+46+46 = 113
  • 分区内Sa总和:10+32+32+7 = 81
  • 分区内Ai总和:2+38+81+81 = 202
  • RA计算结果:(113+81)/202 ≈ 0.96,和你给出的示例值完全一致。Ai总和为0的分组(比如J302022的Mar组)会直接返回0,符合规则。

注:你给出的期望输出里有一行46 7 81 Apr J302022 0.65,对照原表数据这行的MDY实际是J302021,属于手误,按上述代码运行时会基于原表真实字段值计算,不会出现这个匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:03:15