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

如何使用GROUP BY实现按Postid统计不同type的记录数量?

解决方案:按Postid统计不同Type的数量

别担心,这个需求用条件聚合函数就能完美解决!你之前用GROUP BY没得到预期结果,应该是没针对不同type值做分别统计~

预期输出效果

先明确我们要得到的结果格式:

postidtype_0_counttype_1_count
2042
2133

方法一:使用COUNT + CASE语句

这种方法利用COUNT会忽略NULL值的特性,当type匹配目标值时返回1,否则返回NULL,从而统计对应类型的行数:

SELECT 
    postid,
    COUNT(CASE WHEN type = 0 THEN 1 END) AS type_0_count,
    COUNT(CASE WHEN type = 1 THEN 1 END) AS type_1_count
FROM your_table_name  -- 替换成你的实际表名
GROUP BY postid;

方法二:使用SUM + CASE语句

如果你更习惯用SUM,也可以让匹配条件时返回1,不匹配时返回0,求和后就是对应类型的数量:

SELECT 
    postid,
    SUM(CASE WHEN type = 0 THEN 1 ELSE 0 END) AS type_0_count,
    SUM(CASE WHEN type = 1 THEN 1 ELSE 0 END) AS type_1_count
FROM your_table_name  -- 替换成你的实际表名
GROUP BY postid;

验证数据匹配度

我们对照你给出的原始数据检查:

  • Postid=20:type=0的行是id1、5、9、11,共4条;type=1的行是id3、7,共2条,完全符合预期。
  • Postid=21:type=0的行是id4、6、12,共3条;type=1的行是id2、8、10,共3条,和需求完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:57:49