Второе по величине значение в группе - PullRequest
0 голосов
/ 09 июля 2020

Я хочу выбрать второе по величине значение в каждой группе, как я могу сделать это в SQL?

Например, с таблицей ниже

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

При группировке по идентификаторам , Мне нужен этот результат

IDs value
ID1 3
ID2 2

Спасибо.

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Альтернативный способ - вы можете использовать density_rank ().

Он гарантирует, что ваш SQL всегда возвращает второе по величине значение, даже если у вас есть две записи с наибольшим значением.

select t.*
from (select t.*, dense_rank() over (partition by id order by value desc) as rrank
      from t
     ) t
where rrank = 2;
1 голос
/ 09 июля 2020

Используйте 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...