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

SQL多条件列统计:按Subtype用不同公式计算并汇总计数

解决思路与SQL实现

直接用条件聚合就能搞定这个需求,不用复杂的分组或多次查询,核心是用SUM()搭配CASE语句,按规则计算每行的贡献值后汇总。

完整查询语句

SELECT
    -- Category A的Subtype1+Subtype2总计数
    SUM(CASE 
        WHEN Category = 'A' AND Subtype = 1 THEN 0.5
        WHEN Category = 'A' AND Subtype = 2 THEN 1
        ELSE 0
    END) AS A_Total_Count,
    -- Category B的Subtype1+Subtype2总计数
    SUM(CASE 
        WHEN Category = 'B' AND Subtype = 1 THEN 0.5
        WHEN Category = 'B' AND Subtype = 2 THEN 1
        ELSE 0
    END) AS B_Total_Count,
    -- 仅Category A的Subtype1计数
    SUM(CASE 
        WHEN Category = 'A' AND Subtype = 1 THEN 0.5
        ELSE 0
    END) AS A_Subtype1_Count,
    -- 仅Category B的Subtype1计数
    SUM(CASE 
        WHEN Category = 'B' AND Subtype = 1 THEN 0.5
        ELSE 0
    END) AS B_Subtype1_Count
FROM your_table_name; -- 替换成你的实际表名

逻辑拆解

  • Subtype=1时,每行按0.5计算(等价于行数除以2);Subtype=2时每行按1计算(等价于行数本身)。
  • 每个SUM(CASE...)对应一个统计项,只累加符合条件的行的贡献值,其他行加0不影响最终结果。
  • 一次查询就能输出所有需要的统计值,无需反复扫描表,效率更高。

可选调整

如果需要整数结果(比如Subtype1的行数为偶数时取整),可以给SUM结果套上FLOOR()或ROUND()函数:

-- 示例:向下取整为整数
FLOOR(SUM(CASE WHEN Category = 'A' AND Subtype = 1 THEN 0.5 ELSE 0 END)) AS A_Subtype1_Count

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:57:12