0

假设现在我有一个像这样的表 T:

A|B
1|1 
1|2 
2|1 
2|2 
2|3 
3|1 
3|2 
3|3 

select A, count(*) from T group by A我们应该得到:

A|count(*)
1|2
2|3
3|3

现在我需要获取上一个查询中的最后两行——它们的最大值为count(*). 如何在单个查询中执行此操作?

谢谢。

4

2 回答 2

3
WITH recordList
AS
(
    SELECT  A, COUNT(*) totalCount,
            DENSE_RANK() OVER (ORDER BY COUNT(*) DESC) rn
    FROM    tableName
    GROUP BY A
)
SELECT  A, totalCount
FROM recordLIst
WHERE rn = 1
于 2013-01-29T03:50:18.113 回答
1
;WITH a(A,C,R) AS
(
  SELECT A, COUNT(*), RANK() OVER (ORDER BY COUNT(*) DESC)
  FROM dbo.T GROUP BY A
)
SELECT A, C FROM a WHERE R = 1;
于 2013-01-29T03:53:47.803 回答