gpt4 book ai didi

sql - 根据由另一列分组的不同列的最大值获取值

转载 作者:行者123 更新时间:2023-12-04 14:11:06 25 4
gpt4 key购买 nike

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





Fetch the row which has the Max value for a column

(35 个回答)


5年前关闭。




我想根据由另一列分组的不同列的最大值来获取列的值。

我有这张 table :

KEY NUM VAL
A 1 AB
B 1 CD
B 2 EF
C 2 GH
C 3 HI
D 1 JK
D 3 LM

并想要这个结果:
KEY VAL
A AB
B EF
C HI
D LM

我实际上可以使用此查询来获取它。
select KEY, VAL
from TABLE_NAME TN
where NUM = (
select max(NUM)
from TABLE_NAME TMP
where TMP.KEY = TN.KEY
)

但是,在 ORACLE SQL(10g 或更高版本)中是否有更优雅的方法来获得结果?

背后的原因是实际上有多个 KEY s,它只是看起来有点难看。

最佳答案

你可以使用 row_number() 来解决这个问题:

select key, val
from (select t.*, row_number() over (partition by key order by num desc) as seqnum
from table_name t
) t
where seqnum = 1;

您是否认为这更“优雅”可能是品味问题。

我应该指出,这与您的查询略有不同。这保证为每个 key 返回一行;你的可以返回多行。如果你想要这种行为,只需使用 rank()dense_rank()而不是 row_number() .

关于sql - 根据由另一列分组的不同列的最大值获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32585397/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com