【发布时间】:2021-02-23 10:28:18
【问题描述】:
我有一个带有列的表格:
ID | FULLNAME | VALUE
01 Joseph 10
02 Sam 50
... ... ...
我需要选择具有最大值的行,并显示类似的信息
FULLNAME | VALUE
我尝试使用组函数MAX(),但我无法选择全名,因为如果我将其用作GROUP BY 表达式,它将选择组中的最大值。
其他方式,就是使用WITH语句,按值desc排序表,使用
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
【问题讨论】: