从最大字段中提取数据

pulling data from max field

我有一个 table 结构,其列类似于以下内容:

ID | line | value
1  |  1   | 10
1  |  2   | 5
2  |  1   | 6
3  |  1   | 7
3  |  2   | 4

理想情况下,我想提取以下内容:

ID | value
1 | 5
2 | 6
3 | 4

一种解决方案是执行如下操作:

select a.ID, a.value
from
myTable a
inner join (select id, max(line) as line from myTable group by id) b
    on a.id = b.id and a.line = b.line

考虑到 table 的大小,并且这只是更大拉动的一部分,我想看看是否有更优雅/更简单的直接拉动方法。

这是 OLAP 函数的任务:

select *
from myTable a
qualify
   rank()  -- assign a rank for each id
   over (partition by id
         order by line desc) = 1

可能 return 每个 id 多行,如果它们共享相同的最大行。如果您只想 return 其中一个,请将另一列添加到 order by 以使其唯一或切换到 row_number 以获得不确定的行。