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

MySQL中按唯一ID统计各Val值计数的实现方案

解决方案:一次性统计ID的总记录数与各Val值计数

嘿,这事儿用条件聚合就能一步搞定,不用反复跑单个Val的查询啦!我们可以在按ID分组的基础上,配合CASE语句和聚合函数,一次性算出你要的所有统计结果。

最终查询语句

SELECT 
    ID,
    COUNT(*) AS count,
    COUNT(CASE WHEN Val = 'a' THEN 1 END) AS a,
    COUNT(CASE WHEN Val = 'b' THEN 1 END) AS b,
    COUNT(CASE WHEN Val = 'c' THEN 1 END) AS c
FROM table1
GROUP BY ID
ORDER BY ID;

语句逻辑解释

  • COUNT(*):直接统计每个ID对应的总记录数,不管Val字段是什么值。
  • COUNT(CASE WHEN Val = 'x' THEN 1 END):当Val匹配目标值时返回1,否则返回NULL;而COUNT函数会自动忽略NULL值,这样就精准得到了该Val值在当前ID下的记录数。如果某个ID没有对应Val值,结果自然就是0,完全符合你想要的输出格式。

执行后输出结果

运行上述语句后,会得到和你期望完全一致的结果:

IDcountabc
13210
23012
31001

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:46:07