我想使用窗口函数按ID进行分区,并将每组的最后一行从第一行中减去,然后用输出创建一个单独的列。实现该结果的最简洁的方法是什么?
ID col1
1 1
1 2
1 4
2 1
2 1
2 6
3 5
3 5
3 7
所需输出:
ID col1 col2
1 1 3
1 2 3
1 4 3
2 1 5
2 1 5
2 6 5
3 5 2
3 5 2
3 7 2
2条答案
按热度按时间scyqe7ek1#
听起来像是将“第一”行定义为组中最小值为
col1
的行,将“最后”行定义为组中最大值为col1
的行。要计算它们,可以使用MIN
和MAX
窗口函数:如果定义“第一行”和“最后一行”的方式不同(例如,根据某个时间戳),则可以使用更通用的
FIRST_VALUE
和LAST_VALUE
窗口函数:上面的两个片段是等效的,但后者更通用:您可以指定按不同的列排序和/或修改窗口规格。
m1m5dgzv2#
代码如下