我的示例输入表是:
x y1 a3 b5 b4 a2 a6 b
x y
1 a
3 b
5 b
4 a
2 a
6 b
我想得到这个:
x y z1 a 12 a 13 b 24 a 35 b 46 b 4
x y z
1 a 1
2 a 1
3 b 2
4 a 3
5 b 4
6 b 4
首先,行必须按 x 然后是 y 应接收其唯一编号(例如 z ). 最后我想用 z . 尽管操作似乎很简单,但我还是无法提出查询。
x
y
z
bvk5enib1#
你可以使用 lag() 然后是一个累积的总和:
lag()
select x, y, sum(case when y = prev_y then 0 else 1 end) over (order by x) as zfrom (select t.*, lag(y) over (order by x) as prev_y from t ) t;
select x, y,
sum(case when y = prev_y then 0 else 1 end) over (order by x) as z
from (select t.*,
lag(y) over (order by x) as prev_y
from t
) t;
1条答案
按热度按时间bvk5enib1#
你可以使用
lag()
然后是一个累积的总和: