选择具有第二个最大帐户数的帐户类型

时间:2015-11-22 01:11:46

标签: sql oracle11g oracle-sqldeveloper

假设我们有一个帐户表以及已经给定的值here

我想找到帐号数量第二高的帐户类型。在这种情况下,结果应为'FD'。如果它们是第二高计数的争用,我需要结果中的所有类型。

我不知道该怎么做。我找到了很多帖子,可以在表格中找到第二个最高值,比如薪水。但不是第二高COUNT

2 个答案:

答案 0 :(得分:0)

这可以使用cte来完成。获取每种类型的计数作为第一步。然后使用dense_rank(在绑定的情况下获取具有相同计数的多行)以根据计数按类型获取行的排名。最后,选择排名第二的行。

with counts as (
select type, count(*) cnt
from yourtable 
group by type)
, ranks as (
select type, dense_rank() over(order by cnt desc) rnk
from counts)
select type 
from ranks
where rnk = 2;

答案 1 :(得分:0)

一种选择是使用row_number()(或dense_rank(),具体取决于"第二个"意味着何时存在关系):

select a.*
from (select a.type, count(*) as cnt, 
             row_number() over (order by count(*) desc) as seqnum
      from accounta a
      group by a.type
     ) a
where seqnum = 2;

在Oracle 12c +中,您可以使用offset / fetch

      select a.type, count(*) as cnt
      from accounta a
      group by a.type
      order by count(*) desc
      offset 1
      fetch first 1 row only