Postgresql 获取对应时间的每天最大值

Postgresql Get Maximum value per day with corresponding time

我有以下 table:

Date      | Time     | Value  | ReceivedTime
2022-04-01| 00:59:59 | 5      | 00:30:15
2022-04-01| 13:59:59 | 15     | 13:30:00
2022-04-02| 21:59:59 | 5      | 21:30:15
2022-04-02| 22:59:59 | 25     | 22:25:15
2022-04-02| 23:59:59 | 25     | 23:00:15
2022-04-03| 14:59:59 | 50     | 00:30:15
2022-04-03| 15:59:59 | 555    | 00:30:15
2022-04-03| 16:59:59 | 56     | 00:30:15

我想获得最大值以及日期、接收时间。

预期结果:

Date       | Value  | ReceivedTime
2022-04-01 | 15     | 13:30:00
2022-04-02 | 25     | 23:00:15
2022-04-03 | 555    | 00:30:15

此答案假设,如果在给定日期有两条或更多条记录在同一最高值上并列,您希望保留最近 ReceivedTime 的一条记录。我们可以在这里使用DISTINCT ON

SELECT DISTINCT ON (Date) Date, Value, ReceivedTime
FROM yourTable
ORDER BY Date, Value DESC, ReceivedTime DESC;