sql—组中的第二大值

zfciruhq  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(418)

我想在每个组中选择第二大的值,如何在sql中做到这一点?
例如下表,

IDs value
ID1 2
ID1 3
ID1 4
ID2 1
ID2 2
ID2 5

当按id分组时,我想要这个输出

IDs value
ID1 3
ID2 2

谢谢。

iszxjhcz

iszxjhcz1#

使用 row_number() :

select t.*
from (select t.*, row_number() over (partition by id order by value desc) as seqnum
      from t
     ) t
where seqnum = 2;
hgc7kmma

hgc7kmma2#

另一种方法-你可以使用稠密等级()。
它将确保您的sql始终返回第二大值,即使您有两个值最大的记录。

select t.*
from (select t.*, dense_rank() over (partition by id order by value desc) as rrank
      from t
     ) t
where rrank = 2;

相关问题