Sql 我可以在红移窗口函数上设置条件吗?
我有一个红移的基于事件的表。我想将所有事件与系列中的第一个事件联系起来,前提是该事件发生在该事件之前的N小时内 如果我所关心的只是第一排,我只会做:Sql 我可以在红移窗口函数上设置条件吗?,sql,amazon-redshift,window-functions,Sql,Amazon Redshift,Window Functions,我有一个红移的基于事件的表。我想将所有事件与系列中的第一个事件联系起来,前提是该事件发生在该事件之前的N小时内 如果我所关心的只是第一排,我只会做: SELECT event_time ,first_value(event_time) OVER (ORDER BY event_time rows unbounded preceding) as first_time FROM my_table 但因为我只想把这件事和过去N小时的第一件事联系起来,所以我想说: SE
SELECT
event_time
,first_value(event_time)
OVER (ORDER BY event_time rows unbounded preceding) as first_time
FROM
my_table
但因为我只想把这件事和过去N小时的第一件事联系起来,所以我想说:
SELECT
event_time
,first_value(event_time)
OVER (ORDER BY event_time rows between [N-hours ago] and current row) as first_time
FROM
my_table
我桌子上有一点背景。这是用户操作,因此用户有效地跳上,执行1-100个操作,然后离开。大多数用户每天使用1-10倍。会话的持续时间很少超过一小时,因此我可以设置N=1
如果我只是按日期(“小时”,事件时间)设置分区,我将为跨小时的会话加倍创建
假设我的桌子看起来像
id | user_id | event_time
----------------------------------
1 | 123 | 2015-01-01 01:00:00
2 | 123 | 2015-01-01 01:15:00
3 | 123 | 2015-01-01 02:05:00
4 | 123 | 2015-01-01 13:10:00
5 | 123 | 2015-01-01 13:20:00
6 | 123 | 2015-01-01 13:30:00
id | parent_id | user_id | event_time
----------------------------------
1 | 1 | 123 | 2015-01-01 01:00:00
2 | 1 | 123 | 2015-01-01 01:15:00
3 | 1 | 123 | 2015-01-01 02:05:00
4 | 4 | 123 | 2015-01-01 13:10:00
5 | 4 | 123 | 2015-01-01 13:20:00
6 | 4 | 123 | 2015-01-01 13:30:00
我的目标是得到一个看起来像
id | user_id | event_time
----------------------------------
1 | 123 | 2015-01-01 01:00:00
2 | 123 | 2015-01-01 01:15:00
3 | 123 | 2015-01-01 02:05:00
4 | 123 | 2015-01-01 13:10:00
5 | 123 | 2015-01-01 13:20:00
6 | 123 | 2015-01-01 13:30:00
id | parent_id | user_id | event_time
----------------------------------
1 | 1 | 123 | 2015-01-01 01:00:00
2 | 1 | 123 | 2015-01-01 01:15:00
3 | 1 | 123 | 2015-01-01 02:05:00
4 | 4 | 123 | 2015-01-01 13:10:00
5 | 4 | 123 | 2015-01-01 13:20:00
6 | 4 | 123 | 2015-01-01 13:30:00
到目前为止,答案似乎是“不”
SQL Server中有一种使用范围而不是框架中的行的功能。这允许查询将值与当前行的值进行比较
当我在红移中尝试这种语法时,我得到一个错误:“范围还不受支持”
当“尚未”更改时,有人更新此 所以你的问题不是如何给一个窗口函数设置条件,而是如何计算带有帖子的会话,对吗?答案是这样的。现在找不到。您能发布表的示例数据及其关系吗?您如何需要这些数据?