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

SQL分组统计如何将不同条件CASE求和结果合并为同一列

SQL实现方案

基础信息

  • 待查询表:items,包含字段id、timestamp、type,测试数据如下:
id, timestamp, type
1, 1, "ONE"
1, 5, "ONE" 
1, 10, "ONE" 
1, 1, "TWO" 
1, 5, "TWO" 
1, 10, "TWO"
  • 统计规则:
    • 按type字段分组,统计每组总记录数
    • 按类型匹配对应阈值统计符合条件的记录数:ONE类型统计timestamp > 4的记录数,TWO类型统计timestamp > 7的记录数
    • 最终返回三列:type、总记录数total、阈值符合计数greater_than_date_count,消除原写法的冗余列。

正确查询语句

不需要拆分多列分别计数,直接将不同类型的阈值判断合并到同一个聚合逻辑中即可,注意修正原查询的字段拼写错误(原语句中timstamp为笔误,正确字段名为timestamp),语句如下:

SELECT 
    type,
    COUNT(*) AS total,
    SUM(
        CASE
            WHEN type = 'ONE' AND timestamp > 4 THEN 1
            WHEN type = 'TWO' AND timestamp > 7 THEN 1
            ELSE 0
        END
    ) AS greater_than_date_count
FROM items
GROUP BY type;

扩展说明:如果后续需要新增其他类型的阈值规则,只需要在CASE语句中新增对应的WHEN判断分支即可,不需要调整返回结果结构。

预期返回结果

type, total, greater_than_date_count
ONE, 3, 2
TWO, 3, 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:12:19