sql - выберите один идентификатор для каждой группы с наименьшим значением - PullRequest
2 голосов
/ 16 мая 2019

Рассмотрим следующую таблицу:

ID      GroupId     Rank
1       1           1
2       1           2
3       1           1
4       2           10
5       2           1
6       3           1           
7       4           5

Мне нужен запрос выбора sql (для MS-SQL), выбирающий один Id для каждой группы с самым низким рангом. Каждая группа должна возвращать только один идентификатор, даже если есть два с одинаковым рангом (как 1 и 2 в приведенной выше таблице). Я пытался выбрать минимальное значение, но требование, чтобы только одно возвращалось, а возвращаемое значение - это столбец идентификатора, бросает меня.

Кто-нибудь знает, как это сделать?

1 Ответ

5 голосов
/ 16 мая 2019

Использование row_number():

select t.*
from (select t.*,
             row_number() over (partition by groupid order by rank) as seqnum
      from t
     ) t
where seqnum = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...