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

SQL按步骤计算总和/日期计数的商时遇分组表达式序列为空错误

问题原因及解决方法

核心错误点

  • 前两个SELECT语句中使用了聚合函数COUNT(rep_date),但未添加GROUP BY子句。SQL规定:查询中出现非聚合列(比如rep_date、StepCompSum)时,必须将这些列加入GROUP BY,否则会抛出「分组表达式序列为空」「列不是聚合函数」的错误。
  • 仅给最后一个SELECT加GROUP BY无效,前两个查询依然不符合规则,错误无法解决。
  • 重复写3个UNION语句完全冗余,既增加代码复杂度,也影响执行效率。

修正后的SQL代码

直接通过WHERE筛选目标FunCat值,结合GROUP BY完成分组计算,同时用CASE生成AssignRank:

SELECT 
    rep_date,
    CASE FunCat
        WHEN 'StepCompA' THEN 1
        WHEN 'StepCompB' THEN 2
        WHEN 'StepCompC' THEN 3
    END AS AssignRank,
    StepCompSum,
    FunCat,
    CAST(StepCompSum / COUNT(rep_date) AS DOUBLE) AS ParticRate
FROM TableBlank
WHERE FunCat IN ('StepCompA', 'StepCompB', 'StepCompC')
GROUP BY rep_date, StepCompSum, FunCat
ORDER BY AssignRank

补充说明

如果StepCompSum本身需要先按分组聚合(比如求和),再计算比率,可调整为:

SELECT 
    rep_date,
    CASE FunCat
        WHEN 'StepCompA' THEN 1
        WHEN 'StepCompB' THEN 2
        WHEN 'StepCompC' THEN 3
    END AS AssignRank,
    SUM(StepCompSum) AS StepCompSum,
    FunCat,
    CAST(SUM(StepCompSum) / COUNT(rep_date) AS DOUBLE) AS ParticRate
FROM TableBlank
WHERE FunCat IN ('StepCompA', 'StepCompB', 'StepCompC')
GROUP BY rep_date, FunCat
ORDER BY AssignRank

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 23:20:26