SQL计数出现行

时间:2016-10-06 11:47:43

标签: sql sql-server tsql

我有一张这样的表:

  

c1 | c2
a | 2
b | 1
a | 1
b | 3
a | 2

如何计算得到这样的结果

  

COL1 | col2 | 出现次数
a | 1 | 1
a | 2 | 2
b | 3 | 1

在得到这样的最大值之后:

COL1 COL2
一个| 2
C | 1

2 个答案:

答案 0 :(得分:2)

Count 1是你的朋友,count *会导致更长的加载时间。

SELECT C1, C2, COUNT(1) AS numberofoccurrences
FROM TABLE 
GROUP BY C1, C2

抱歉延误。为了让Max使用以下内容;

; WITH CTE AS(
    SELECT c1, c2, COUNT(1) AS NoOfOccurence FROM TEST
    GROUP BY c1, c2
), BTE AS(
    SELECT c1, c2, ROW_NUMBER() OVER(PARTITION BY c1 ORDER BY NoOfOccurence DESC) AS RN FROM CTE
)SELECT c1, c2 FROM BTE WHERE RN = 1

答案 1 :(得分:0)

这是一个包含最终最大值输出的完整解决方案。另请注意,c1和c2上的索引将显着提高性能。

{{1}}