Postgresql, получить данные согласно условию - PullRequest
0 голосов
/ 08 марта 2020

У меня есть данные о рейсах, так как выбрать строку с наибольшим номером для столбца частоты?

from to date                   frequency
XKA LAA 2019-12-17 13:40:00     1
XKA LAA 2019-10-11 13:05:00     1
XKA LAA 2019-08-07 13:05:00     1
XKA LAA 2019-09-28 13:05:00     1
XKA LAA 2019-07-20 13:05:00     3
XKA LAA 2019-08-05 13:05:00     2
XKA LAA 2019-10-06 13:05:00     1
XKA LAA 2019-11-12 13:40:00     4

А что если

LUU KII 2019-11-12 13:40:00 1
LUU KII 2019-10-06 13:05:00 1
LUU KII 2019-11-12 13:47:00 1

Мне нужно выбрать все они потому что между ними нет наибольшего числа. Как сделать?

1 Ответ

0 голосов
/ 08 марта 2020

Предполагая, что вы хотите это для from / to пар, используйте distinct on:

select distinct on (from, to) f.*
from frequencies f
order by from, to, frequency desc;

В противном случае просто используйте order by и limit:

select f.*
from frequencies f
order by frequency desc
limit 1;

Или, если вам нужно несколько строк в случае связей, используйте rank():

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