例如,我们有:
element | group_value | value
a | 1 | 2000
a | 2 | 1500
a | 2 | 2500
b | 1 | 1000
Run Code Online (Sandbox Code Playgroud)
我只想返回最后 3 条记录,因为这些记录是每个元素具有最大组值的记录。
我知道有一个带有子查询的解决方案,但有没有一个有效的解决方案?
澄清:对于元素“a”:
2 是最高的 group_value,因此它返回第 2 行和第 3 行>(而不是第一行,因为它的组值不是最高的),
对于元素“b”:
1 是 > 最高的 group_value 所以它返回第 4 行
我的(性能不好)解决问题的方法是:
select *
from x x1
where (element, group_value) in (select element, max(group_value)
from x x2
where x1.element = x2.element
group by x2.element)
Run Code Online (Sandbox Code Playgroud)