Postgres SQL: Как выбрать максимальное значение в столбце «media» для той же отметки времени в postgres? - PullRequest
1 голос
/ 08 мая 2020

Я использую pos sql через программу DataGrip. У меня есть следующая таблица:

    timestamp       | Channel |  media
-----------------------------------------
2020-04-29 00:00:00 |   3     |   1.2
2020-04-29 00:00:00 |   4     |    2
2020-04-29 00:00:00 |   5     |    1
2020-04-29 00:10:00 |   3     |    2
2020-04-29 00:10:00 |   4     |   1.5
2020-04-29 00:10:00 |   5     |    3

Я хотел бы отсортировать по наивысшему значению в столбце «медиа» для каждой «отметки времени» следующим образом:

    timestamp       | Channel |  media
-----------------------------------------
2020-04-29 00:00:00 |   4     |    2
2020-04-29 00:10:00 |   5     |    3

Как можно Я делаю это?

Я пытался это сделать, но не получилось, повторяется исходная таблица:

SELECT timestamp, max(media), channel
FROM monitoring_aggregate
GROUP BY timestamp, channel
ORDER BY timestamp 

1 Ответ

1 голос
/ 08 мая 2020

В Postgres можно просто использовать distinct on, чтобы решить эту проблему с топ-1 по группе:

select distinct on (timestamp) ma.*
from monitoring_aggregate ma
order by timestamp, media desc
...