卡在 select 最大行

Stuck to select maximum row

我有一个 table 列:

ID | FULLNAME | VALUE
01   Joseph     10
02   Sam        50
...  ...       ... 

我需要 select 具有最大值的行,并显示类似

的信息
FULLNAME | VALUE 

我尝试使用组函数 MAX(),但我不能 select 全名,因为如果我将它用作 GROUP BY 表达式,它将 select max在组中。

其他方式,就是使用WITH语句,按值desc排序table,使用

rank() OVER (PARTITION BY ID) AS max_id 

函数和最大值会在max_id = 1,然后用

WHERE max_id = 1 

删除其他行。

但我认为有更好的方法,但我找不到。

更新:

这个问题的一个棘手的解决方案是

SELECT *
FROM t t1
    LEFT JOIN t t2 ON t1.value<t2.value
WHERE t2.value IS NULL

最简单的方法是对数据进行排序并拉取一行:

select t.*
from t
order by value desc
fetch first 1 row only;

如果您想要平局,可以将 with ties 添加到 fetch first

另一种方法是:

select t.*
from t
where t.value = (select max(t2.value) from t t2);

value.

上的索引可以有很好的性能