【发布时间】:2022-11-30 02:22:31
【问题描述】:
我试图在 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),这些部分必须属于同一组。 试图使用排名窗口功能,但使用“范围介于”无法获得该结果。
谢谢!
【问题讨论】:
-
请以干净的方式呈现您的数据(选择您的表格数据并按 ctrl+k。并分享您的预期输出
标签: sql sql-server database window-functions