Получить идентификатор строки из максимального значения - PullRequest
0 голосов
/ 14 декабря 2018

Я новичок в базе данных

У меня есть следующая таблица:

id  group       factor
------------------------
1   11          1
2   11          5
4   11          2
5   12          3
6   12          2
7   13          4
8   13          1
9   13          8
10  14          6

Мне нужно получить идентификатор того, который имеет наибольший коэффициент на основе его группы, дляНапример, в случае группы 11 строка с наибольшим фактором равна 5, поэтому мне нужно получить идентификатор этой строки, в данном случае 2.

, пожалуйста, если кто-то может указать мне правильный путь.

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Вы можете использовать для него простое CTE (Common Table Expression), как в:

with
x as (
  select group_id, max(factor) as max_factor from my_table group by group_id
)
select t.*
from my_table t
join x on x.group_id = t.group_id and x.max_factor = t.factor

Это решение имеет функцию [желательно?], Которая в случае, если несколько строк связаны на первом месте водна и та же группа, она покажет их всех, а не одну [случайную] из них.

0 голосов
/ 15 декабря 2018

Если вы знаете группу заранее, например, 11, то вы можете просто сделать:

SELECT id
FROM tab
WHERE group = 11
ORDER BY factor DESC
LIMIT 1;

В противном случае, если вы хотите получить результат для каждой группы, представленной в таблице, тогда Лукаш Шозда ответит такидти.

0 голосов
/ 14 декабря 2018

Вы можете использовать:

SELECT DISTINCT ON(group) group factor, id
FROM tab
ORDER BY group, factor DESC;

db <> fiddle demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...