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

SQL Server中无需分组实现列值出现次数的每行统计

实现SQL Server中每行显示对应Column A的全局出现次数

原始表(Table1)

Column AColumn B
ACell 2
ACell 4
BCell 2
ACell 4
BCell 2
ACell 4

需求

需要新增Column C列,每行显示对应Column A值在整个表中的出现次数,最终结果如下:

Column AColumn BColumn C
ACell 24
ACell 44
BCell 22
ACell 44
BCell 22
ACell 44

尝试的错误查询

使用带GROUP BY的查询会将结果按ColumnA分组聚合,仅返回两行,无法满足每行显示统计值的需求:

Select ColumnA, Count(ColumnA) as ColumnC
from Table1
group By columnA

正确SQL语句

方法1:窗口函数(推荐)

利用SQL Server的窗口函数COUNT() OVER(PARTITION BY ColumnA),可以在不分组的前提下,计算每个ColumnA分组的全局出现次数,直接匹配到每一行:

SELECT 
    ColumnA,
    ColumnB,
    COUNT(ColumnA) OVER(PARTITION BY ColumnA) AS ColumnC
FROM Table1;

方法2:子查询关联

先通过子查询统计每个ColumnA的出现次数,再将统计结果与原表关联,把次数匹配到对应行:

SELECT 
    t1.ColumnA,
    t1.ColumnB,
    t2.Cnt AS ColumnC
FROM Table1 t1
JOIN (
    SELECT ColumnA, COUNT(*) AS Cnt
    FROM Table1
    GROUP BY ColumnA
) t2 ON t1.ColumnA = t2.ColumnA;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:53:25