我正在尝试使用SQL上的多窗口功能创建一个分组,目标是区分不同的组,如果中间有一些其他组。见下表
Part | time | expected result |
a | 11-29-2022 00:05:00.000 | 1 |
a | 11-29-2022 00:05:00.010 | 1 |
b | 11-29-2022 00:06:00.000 | 2 |
c | 11-29-2022 00:15:00.000 | 3 |
c | 11-29-2022 00:15:00.000 | 3 |
b | 11-29-2022 00:40:00.010 | 4 |
b | 11-29-2022 00:40:00.020 | 4 |
b | 11-29-2022 00:40:00.020 | 4 |
b | 11-29-2022 00:40:00.030 | 4 |
我正在做的事情就像:
Select part, time, count(*) over(Partition by Part order by time )
让我们集中在部分“B”,第一次出现是在第6分钟,之后出现不同的部分和部分b再次出现在第40分钟,所以我需要像时间范围创建分组的东西
还要注意的是,有时候时间是不同的,即使部分是连续的(部分B),这些必须属于同一组。我们试图使用Rank
窗口函数,但与'范围之间'不能得到这个结果。
谢谢你!
2条答案
按热度按时间wlzqhblo1#
这是通过dense_rank()实现的另一个选项
结果
k0pti3hp2#
请尝试此sql查询。
或