sqlserver如何统计相同值出现指定次数的结果?
1、创建一个临时表,用于演示如何筛选出表中指定字段值重复的记录数量
IF OBJECT_ID('tempdb..#tmp1') IS NOT NULL DROP TABLE #tmp1;
CREATE TABLE #tmp1(
Col1 varchar(50),
Col2 varchar(200),
Col3 int
);

2、往临时表中插入几行测试数据,其中部分字段的Col2栏位值插入相同值,用于统计筛选相同Col2的行数
insert into #tmp1(Col1, Col2, Col3) values('Code1', '语文', 95);
insert into #tmp1(Col1, Col2, Col3) values('Code2', '数学', 96);
insert into #tmp1(Col1, Col2, Col3) values('Code3', '英语', 92);
insert into #tmp1(Col1, Col2, Col3) values('Code4', '语文', 98);
insert into #tmp1(Col1, Col2, Col3) values('Code5', '语文', 97);
insert into #tmp1(Col1, Col2, Col3) values('Code6', '英语', 92);

3、查询临时表中的测试数据
select * from #tmp1;

4、使用distinct可以筛选出Col2列的不同值的记录
select distinct Col2
from #tmp1

5、使用count(1)加上group by计算出Col2不重复值的记录行数
select Col2, COUNT(1)
from #tmp1
group by Col2

6、使用having过滤出Col2列的行数大于1的值以及行数
select Col2, COUNT(1)
from #tmp1
group by Col2
having COUNT(1) > 1

7、使用having过滤出Col2列的行数大于1的值以及行数,在按照行数倒序排列
select Col2, COUNT(1)
from #tmp1
group by Col2
having COUNT(1) > 1
order by COUNT(1) desc
