使用 row_number() 来自内部查询的 max(count)

max(count) from inner query using row_number()

我正在尝试选择在我的内部查询中具有最大计数的 src_cd

select count(*), src_cd 
from innertable1 
group by src_cd

上述查询的结果是:

cnt src_cd
100 CCC
90 BBB
80 AAA

从上面的结果我想做一个

select * 
from table1 
where src_cd having max(cnt of src_cd from innertable1)

我也想用row_number()来选2nd max, 3rd max等等

您可以使用 limit 1 和 order by 来选择最大的。

select count(*), src_cd 
from innertable1 
group by src_cd
order by 1 desc
limit 1

Order by 将按计数降序排列。 limit 将选择第一行。

您还可以使用子查询来计算下一个最大行数 row_number()

select src_cd as second_max
from (
select src_cd, row_number() over( order by cnt desc) as rownum
from (
select count(*) cnt, src_cd 
from innertable1 
group by src_cd
)rs
) rs2
where rownum=2 -- second MAX