【问题标题】:SQL get all columns from max aggregationSQL从最大聚合中获取所有列
【发布时间】:2022-09-22 21:50:35
【问题描述】:

我有一张这样的桌子:

ID (Not PK) time_to_prioritize extra_info_1 extra_info_2
001 0 info_1 info_1
001 1 info_1 info_1
001 2 info_1_last info_1_last
002 1 info_2 info_2
002 2 info_2_last info_2_last
003 0 info_3_last info_3_last

我的目标是获得最大值(time_to_prioritize)所有不同的 ID 以及额外的列,如下所示:

ID (Not PK) time_to_prioritize extra_info_1 extra_info_2
001 2 info_1_last info_1_last
002 2 info_2_last info_2_last
003 0 info_3_last info_3_last

我被困在

SELECT TOP 1 * FROM my_table
ORDER BY time_to_prioritize DESC

我试图加入它本身,但没有结果。 实现结果的下一步是什么? 谢谢。

附言SQL MAX of multiple columns? 上的结果 对我没有帮助,因为该链接是每列的最大值,我只需要 1 列的最大值以及其余数据

  • 你想要 GROUP BY,而不是 ORDER BY。
  • 像 \'\'\'Select Max (time) from my_table Groupby(ID) \'\'\' 之类的东西?我对这种方法的问题是我无法获得其余的列

标签: sql sql-order-by


【解决方案1】:

您可以使用ROW_NUMBER 函数如下:

SELECT T.ID, T.time_to_prioritize, T.extra_info_1, T.extra_info_2
FROM
(
  SELECT *, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY time_to_prioritize DESC) rn
  FROM my_table
) T
WHERE T.rn=1
ORDER BY T.ID

请参阅demo

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 1970-01-01
    • 2019-08-03
    • 2019-08-30
    • 2016-11-28
    • 2020-11-03
    • 2012-03-10
    • 2012-03-28
    • 2017-08-02
    相关资源
    最近更新 更多