我有一张桌子如下:
group sequence action
1 1 promotion_1
1 2 promotion_1
1 3 promotion_2
1 4 act1
1 5 act1
1 6 act2
1 7 promotion_1
1 8 act1
1 9 act2
1 10 promotion_1
1 11 act1
2 1 promotion_2
2 2 act1
我想建立一个排名,这将显示推广的范围。因此,我需要有相同的号码来晋级,以及每次晋级后的行动:
group sequence action parameter
1 1 promotion_1 1
1 2 promotion_1 2
1 3 promotion_2 3
1 4 act1 3
1 5 act1 3
1 6 act2 3
1 7 promotion_1 4
1 8 act1 4
1 9 act2 4
1 10 promotion_1 5
1 11 act1 5
2 1 promotion_2 1
2 2 act1 1
我了解了窗口函数及其可能性(例如over()),但我只能创建按“操作”分组的排名。
最佳答案
select T.*,
sum(case when action like 'promotion%' then 1 else 0 end)
over(partition by "group" order by sequence rows unbounded preceding) parameter
from Table T
关于sql - 如何使用窗口函数-PostgreSQL中的困难情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43766825/