【发布时间】:2017-12-13 09:12:28
【问题描述】:
我需要制作某种集群,尝试使用 row_number、rank 和 dense_rank 但没有任何效果。
USER START_DATE ID_TO_CLUSTER END_DATE NEW FIELD_SESSION
262 01/10/2017 00:01 4 01/10/2017 00:03 S1
262 01/10/2017 00:02 4 01/10/2017 00:03 S1
262 01/10/2017 00:03 0 01/10/2017 00:03 NO SESSION
262 01/10/2017 00:03 1 01/10/2017 00:03 NO SESSION
262 01/10/2017 00:03 7 01/10/2017 00:03 NO SESSION
262 01/10/2017 00:03 2 01/10/2017 00:07 NO SESSION
262 01/10/2017 00:07 3 01/10/2017 00:07 NO SESSION
262 01/10/2017 00:07 4 01/10/2017 00:11 S2
262 01/10/2017 00:07 4 01/10/2017 00:11 S2
262 01/10/2017 00:11 7 01/10/2017 00:11 NO SESSION
262 01/10/2017 00:11 9 01/10/2017 00:11 NO SESSION
262 01/10/2017 16:28 0 01/10/2017 16:30 NO SESSION
262 01/10/2017 16:28 1 01/10/2017 16:28 NO SESSION
262 01/10/2017 16:30 2 01/10/2017 16:30 NO SESSION
262 01/10/2017 16:30 3 01/10/2017 16:30 NO SESSION
262 01/10/2017 16:30 4 01/10/2017 16:36 S3
262 01/10/2017 16:30 4 01/10/2017 16:36 S3
262 01/10/2017 16:36 4 01/10/2017 16:36 S3
基本上,当 id_to_cluster 在后续时间重复时,我需要将 ID_TO_CLUSTER 分组到一个 Session (new_field_session) 中,以获得每个集群的最小开始日期和最大结束日期。
你能帮帮我吗?
更新:
响应 Leran 2002 的回答:建议的解决方案仅在要分组的行为 2 时有效,而在它们为 3 或更多时无效。有什么想法吗?
【问题讨论】:
-
您能否为提供的示例数据添加预期输出?我怀疑你应该看看
gaps-and-islands标签。
标签: sql-server