选择最大值并仅按一列分组

lokaqttq  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(313)

这个问题在这里已经有答案了

按组选择每组中的第一行(17个答案)
10个月前关门了。
在使用max函数时,我很难选择多个列,因为我只希望它按一列分组。
这是我的数据集:

UPDATED_DATE    ACCOUNT_NUMBER     LIMIT
------------    --------------     -----
2020-02-01      ABC123             100
2020-02-06      ABC123             300
2020-03-04      XYZ987             500
2020-05-19      XYZ987             100

以下是我希望看到的结果:

UPDATED_DATE    ACCOUNT_NUMBER     LIMIT
------------    --------------     -----
2020-02-06      ABC123             300
2020-05-19      XYZ987             100

我很感激你的帮助。

3mpgtkmj

3mpgtkmj1#

可以使用窗口函数:

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

或者——一种通常在索引正确的情况下性能稍好的方法——:

select t.*
from t
where t.updated_date = (select max(t2.updated_date) from t t2 where t2.account_number = t.account_num);

或者,如果您不喜欢子查询,也不太关心性能:

select top (1) with ties t.*
from t
order by row_number() over (partition by account_number order by updated_date desc);

相关问题