【问题标题】:Postgres sql select result based on a ranking derived from a text column基于从文本列派生的排名的 Postgresql 选择结果
【发布时间】:2016-05-11 17:22:51
【问题描述】:

在这里挠头。我有一个非常简单的 postgres 表,我需要每天从中选择一个唯一的行,仅基于如下更新的文本列。

第一次更新='AA1',第二次更新='AB',第三次更新='D4'

    id  item      date         run    value
    ---------------------------------------
    23  apple     01/01/16      AA1    232
    25  apple     01/01/16      AB     254
    26  apple     01/01/16      D4     212

根据一天中的时间,基于日期('01/01/2016')运行查询将返回 1、2 或 3 行。但是我只需要最新的行,例如运行 = D4 以上。

如何编写一个简单的选择查询,该查询始终只返回基于文本列的最新行?我想我需要根据“运行”列创建排名,但我不知道该怎么做。

问候

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    使用方便的distinct on

    select distinct on (date) *
    from t
    order by date, run desc
    

    【讨论】:

    • 伟大的工作,如此简单的解决方案。完美运行。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多