I am trying to pick the src_cd which has the maximum count in my inner query:
select count(*), src_cd
from innertable1
group by src_cd
Result for the above query is:
| cnt | src_cd |
|---|---|
| 100 | CCC |
| 90 | BBB |
| 80 | AAA |
From the above result I want to do a
select *
from table1
where src_cd having max(cnt of src_cd from innertable1)
I also want to use row_number() to pick the 2nd max, 3rd max and so on
CodePudding user response:
You can use limit 1 with order by to pick largest.
select count(*), src_cd
from innertable1
group by src_cd
order by 1 desc
limit 1
Order by will order in descending order of count. limit will pick up first row.
You can also use subquery to calculate next max rows using 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
