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

SQL Server 2019中按单列分组实现Count高级统计的问题

SQL Server 2019 统计number列数量的正确写法

你当前的SQL语句问题在于把number也加入了分组条件,这会导致每一组都是id+name+number的唯一组合,count(number)的结果其实是该组合的出现次数(通常是1,除非有完全重复的行),所以才会出现ID和name列不符合预期的显示效果。

根据你的需求,分三种常见场景给出解决办法:

场景1:统计每个id+name对应的number总条数(包含重复number)

如果需要统计每个id和name下所有number的总行数,只需要按id和name分组即可:

SELECT 
    id, 
    name, 
    COUNT(number) AS number_total_count
FROM table_demo
GROUP BY id, name

如果允许number为NULL,COUNT(number)会忽略NULL值;若要统计所有行(包括NULL),可以改用COUNT(*)。

场景2:统计每个id+name下不同number的个数

如果需要统计每个id和name下不重复的number的数量,使用COUNT(DISTINCT number):

SELECT 
    id, 
    name, 
    COUNT(DISTINCT number) AS distinct_number_count
FROM table_demo
GROUP BY id, name

场景3:统计每个number值的出现次数,同时保留对应的id和name

如果你的需求是每个number值单独一行,显示它的出现次数,且对应的id和name是该number关联的唯一值(假设同一个number只对应一组id+name),可以保留number在分组中:

SELECT 
    id, 
    name, 
    number, 
    COUNT(*) AS number_occurrence
FROM table_demo
GROUP BY id, name, number

这种写法会把所有id、name、number完全相同的行合并,统计出现次数。

内容的提问来源于stack exchange,提问作者Danh Tran Quoc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:06:28