【问题标题】:SQL : Keep ONE row with max value on a column depending on value of another columnSQL:根据另一列的值在列上保留一个具有最大值的行
【发布时间】:2021-04-29 18:58:01
【问题描述】:

在 StackOverflow 上有详细记录,如何在每个组标识符 (SQL select only rows with max value on a column) 的列中找到具有某个最大值的行的整个数据。

但给定的解决方案将显示具有该最大值的所有行。 如果我们有 3 个 cols "ID, col1, col2" 并且我们想为每个 ID 保留 col1 值最高的行但是如果有多个,只保留 col2 值最低的实例?

谢谢!

【问题讨论】:

标签: mysql sql greatest-n-per-group


【解决方案1】:

一种方法是rank()row_number()

select t.*
from (select t.*,
             row_number() over (partition by id order by col1 desc, col2 asc) as seqnum
      from t
     ) t
where seqnum = 1;

当同一 ID 存在重复的 max col1/min col2 时,如果您想要多行,您可以使用 rank()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 2022-01-24
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2021-07-25
    • 2017-12-27
    相关资源
    最近更新 更多