Sql 我可以在红移窗口函数上设置条件吗?

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

我有一个红移的基于事件的表。我想将所有事件与系列中的第一个事件联系起来,前提是该事件发生在该事件之前的N小时内

如果我所关心的只是第一排,我只会做:

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中有一种使用范围而不是框架中的行的功能。这允许查询将值与当前行的值进行比较

当我在红移中尝试这种语法时,我得到一个错误:“范围还不受支持”


当“尚未”更改时,有人更新此

所以你的问题不是如何给一个窗口函数设置条件,而是如何计算带有帖子的会话,对吗?答案是这样的。现在找不到。您能发布表的示例数据及其关系吗?您如何需要这些数据?