【发布时间】:2020-08-05 20:55:13
【问题描述】:
我有一个存储用户 ID、会话 ID 和日期时间的表。该表存储用户登录到设备时的数据并存储用户、会话和日期时间。一个 userid 和 sessionid 组合可以有多个条目。例如:
USERID | SESSIONID | DATE
abcd | 1234 | 2020-05-14 10:30:00
abcd | 1234 | 2020-05-14 10:32:00
abcd | 1234 | 2020-05-14 10:35:00
abcd | 1234 | 2020-05-14 11:32:00
abcd | 1234 | 2020-05-14 11:39:00
我正在尝试将这些行组合到一个新表中,该表基于相同会话和用户的初始日期时间到日期时间 + x。如果日期超过 datetime+x,则初始日期时间会移动。因此,如果 x 是 30 分钟,则从 start 到 datetime + 30min 的任何日期都是一行。如果某个日期大于 datetime + 30 分钟,它将成为新的开始日期时间,并且您执行 datetime+x 直到所有日期都被查看为 sessionid 和 userid 组合。
示例表的输出应该是:
USERID | SESSIONID | START_SESSION_DATE | END_SESSION_DATE
abcd | 1234 | 2020-05-14 10:30:00 | 2020-05-14 10:35:00
abcd | 1234 | 2020-05-14 11:32:00 | 2020-05-14 11:39:00
我不确定如何仅使用 SQL 来实现这一点。我打算创建一个存储过程来执行 javascript 中的所有逻辑,然后插入到 Snowflake 中的新表中,但这会非常慢并且不会扩展。提前致谢。
【问题讨论】:
标签: sql datetime snowflake-cloud-data-platform recursive-query