我有一张桌子如下:

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/

10-11 09:13