[Raw data]
A B C
1 10 1
1 10 2
2 20 3
2 20 4
1 100 5
1 100 6
[Wanted result]
A SUM_OF_B
1 20
2 40
1 200
Run Code Online (Sandbox Code Playgroud)
查询具有简单的'group by'子句和'dense_rank over partition by'是不可用的,因为分组可以处理所有行.但是我想要在订购状态下进行分组.如何编写正确的查询?
您需要识别相邻记录的组.实际上,您可以通过使用行数方法的差异来实现此目的 - 假设c对行进行排序.连续值的差异是恒定a的:
select a, sum(b)
from (select t.*,
(row_number() over (order by c) -
row_number() over (partition by a order by c)
) as grp
from table t
) t
group by grp, a
order by min(c);
Run Code Online (Sandbox Code Playgroud)