【问题标题】:Highest value for each GROUP每个 GROUP 的最高值
【发布时间】:2022-11-05 02:59:08
【问题描述】:

我有一个有 2 列的表(还有更多,但这些是重要的)timestampanalysisId。两者都没有限制,但实际上时间戳将是唯一的。许多行具有相同的analysisId 和不同的timestamps。我需要一个查询,它只为每个analysisId 返回最高的timestamp

例如,数据可能看起来像

timestamp | analysisId
1234      | 1
1236      | 1
1300      | 2
1337      | 3
1400      | 3

我想要的结果是

timestamp | analysisId
1236      | 1
1300      | 2
1400      | 3

目前,我有

SELECT "timestamp", analysisId FROM myData GROUP BY (analysisId, "timestamp") ORDER BY "timestamp" DESC LIMIT 1;

但是,当然这只会给我一个结果,而我希望每个结果每个 analysisId

【问题讨论】:

  • 如果您想要每个 analysisId 一行,只需 GROUP BY analysisId
  • 这回答了你的问题了吗? Select first row in each GROUP BY group?
  • 并使用MAX() 获得最高值。
  • 为什么LIMIT 1?跳过 LIMIT,因为您希望返回几行。

标签: sql


【解决方案1】:

这是一个简单的聚合使用最大限度

select analysisId, max(Timestamp) as Timestamp
from t
group by AnalysisId;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2019-07-01
    相关资源
    最近更新 更多