在postgressql中,是否有一种方法可以通过使用partition by或其他方法来获得下面的结果?
last_name year increment partition
Doe 2000 1 1
Doe 2001 2 1
Doe 2002 3 1
Doe 2003 -1 2
Doe 2004 1 3
Doe 2005 2 3
Doe 2006 3 3
Doe 2007 -1 4
Doe 2008 -2 4
3条答案
按热度按时间ddrv8njm1#
tzxcd3kk2#
看起来你想把连续的正/负值分组在一起,一个选项是使用两个row_number函数之间的差,这将使分区具有无序的组编号。
如果希望分区按顺序排列(1、2、3...),可以尝试使用滞后和运行求和的另一种方法,如下所示:
See demo
mcvgt66p3#
如果增量列在列年内没有增加,则标记为1;否则,它将被标记为0。然后,我们使用“
LAG
“对连续的数据进行分组,而不管增量是正的还是负的。