【问题标题】:Get entire record with max field for each group获取每个组的最大字段的整个记录
【发布时间】:2021-08-14 17:53:10
【问题描述】:

关于这个问题有很多答案,但没有一个会检索整个记录,而只有ID......而且我需要整个记录。

所以,我有一个由 4 列组成的表 status_changes

  1. issue_id : 变更所指的问题
  2. id:更改的id,只是一个SERIAL
  3. status_fromstatus_to 实际上是问题之前的状态,以及问题当时的状态
  4. when 这是发生这种情况的时间戳

没什么太疯狂的,但现在,我希望每个问题都有“最新的status_change”。

我尝试了类似的方法:

select id
from change 
group by issue_id
having when = max(when)

但这显然有两个大问题:

  1. select 包含不在 group by 中的字段 2 不能以这种方式包含聚合函数

我想过“按when 对每个组进行排序并使用top(1) 之类的东西,但我不知道该怎么做...

【问题讨论】:

    标签: postgresql group-by aggregate


    【解决方案1】:

    使用 PostgreSQL 的DISTINCT ON:

    SELECT DISTINCT ON (issue_id)
           id, issue_id, status_from, statue_to, when
    FROM change
    ORDER BY issue_id, when DESC;
    

    这将返回每个问题的第一个结果(when 最大的结果)。

    【讨论】:

    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    相关资源
    最近更新 更多