我有一张这样的表:
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
答案 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}}