从最大字段中提取数据
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
以获得不确定的行。
我有一个 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
以获得不确定的行。