假设现在我有一个像这样的表 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(*)
. 如何在单个查询中执行此操作?
谢谢。
假设现在我有一个像这样的表 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(*)
. 如何在单个查询中执行此操作?
谢谢。
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
;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;