小编爱吹牛 发表于 2023-9-14 12:26:16

Postgres选择所有列,但按一列分组

我有一个简单的表,包括unit_id oid,时间戳,diag bytea。主键是time和unit_id的组合。
该查询的目的是为每个唯一的unit_id获得最新的行(最大时间戳)。然而,并不总是回到每一个最新时间。unit_id的行。
我真的只想按unit_id但是postgres也让我用diag,因为我正在选择它。
SELECT DISTINCT ON(unit_id) max(time) as time,diag,unit_id FROM diagnostics.unit_diag_historyGROUP BY unit_id,diag               
    解决方案:                                                               
                                                                每当你开始考虑本地化时GROUP
BY窗口函数应开始考虑。
我想你在追求这样的事情:
select unit_id,time,diagfromselect unit_id,time,diag,          rank() over (partition by unit_id order by time desc) as rank    from diagnostics.unit_diag_history) as dtwhere rank = 1您可能想在ORDER BY添加一些内容总是打破关系,但这不会改变整体技术。
页: [1]
查看完整版本: Postgres选择所有列,但按一列分组