Postgresql:如何为postgres中的相同时间戳选择“媒体”列中的最大值?
Posted
技术标签:
【中文标题】Postgresql:如何为postgres中的相同时间戳选择“媒体”列中的最大值?【英文标题】:Postgres SQL: How to select the highest value in the "media" column for the same time stamp in postgres? 【发布时间】:2020-08-24 06:20:54 【问题描述】:我通过 DataGrip 程序使用 possql。我有下表:
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】:在 Postgres 中,只需使用 distinct on
即可解决此 top-1-per-group 问题:
select distinct on (timestamp) ma.*
from monitoring_aggregate ma
order by timestamp, media desc
【讨论】:
非常感谢您的回复!如果你有 4 列,只选择 3 列并进行相同的排序,就像我会做的那样?以上是关于Postgresql:如何为postgres中的相同时间戳选择“媒体”列中的最大值?的主要内容,如果未能解决你的问题,请参考以下文章
如何为 5500 万条记录批量更新 postgres 中的单个列