postgresql - группировка по номеру и возвращение наибольшего значения - PullRequest
0 голосов
/ 18 мая 2018

моя таблица SQL выглядит следующим образом

+------+--------+
| RANK |  ID    |
+------+--------+
| 1    | 234    |
| 2    | 234    |
| 3    | 234    |
| 1    | 421    |
| 2    | 421    |
+------+--------+

Я хочу сгруппировать ее по идентификатору и вернуть наивысший ранг.Я не знаю, как это сделать, мой код не работает.

SELECT * FROM table GROUP BY ID WHERE max(RANK) 

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Другой метод - distinct on:

select distinct on (id) t.*
from t
order by id, rank desc;

Преимущество distinct on состоит в том, что вы можете легко получить все столбцы в строке, а не только столбец rank.

0 голосов
/ 18 мая 2018

Вы близки:

SELECT ID, max(RANK) FROM table GROUP BY ID

В этом ответе предполагается, что вам нужен следующий результат:

+------+--------+
| RANK |  ID    |
+------+--------+
| 3    | 234    |
| 2    | 421    |
+------+--------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...