【问题标题】:How do you get the rows that contain the max value for each grouped set?您如何获得包含每个分组集的最大值的行?
【发布时间】:2023-04-04 19:19:01
【问题描述】:

表名:- my_test

compid  roundno
1        1
2        1
2        2

我需要像下面这样的输出

compid  roundno
1        1
2        2

【问题讨论】:

  • Select compid , MAX(RoundNo) FROM TableName group by compid
  • SQL Group by & Max的可能重复

标签: sql sql-server sql-server-2008 greatest-n-per-group


【解决方案1】:

典型的方法是使用row_number()

select compid, roundno
from (select t.*,
             row_number() over (partition by compid order by roundno desc) as seqnum
      from t
     ) t
where seqnum = 1;

注意事项:

  • 如果您希望所有行具有相同的值,请使用 rank()
  • 您的简单示例可以只使用group bymax()。如果有其他列,则上述方法有效。

【讨论】:

    【解决方案2】:

    你可以使用max()聚合函数group bycompid

    select compid, max(roundno)
    from tbl
    group by compid;
    

    【讨论】:

      【解决方案3】:

      使用聚合函数。 - 最大()

      select compid,max(roundno)
      from my_test
      group by compid
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-02
        • 2021-08-14
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 2014-09-07
        • 1970-01-01
        相关资源
        最近更新 更多