Amazon redshift 红移窗口功能中的条件

Amazon redshift 红移窗口功能中的条件,amazon-redshift,Amazon Redshift,我试图从一个表中识别每个用户的激活事件,该表包含user\u id、received\u at和event\u name。要获取第一个事件,我可以使用以下窗口函数: first_value(e.received_at ignore nulls) over (partition by e.user_id order by e.received_at rows between unbounded preceding and unbounded following) as first_event

我试图从一个表中识别每个用户的激活事件,该表包含
user\u id
received\u at
event\u name
。要获取第一个事件,我可以使用以下窗口函数:

first_value(e.received_at ignore nulls) 
over (partition by e.user_id 
order by e.received_at rows between unbounded preceding and unbounded following) 
as first_event
我正试图用一个特定的名称来获取事件,在一个子选择中,我可以做如下操作

MIN(
 CASE WHEN
 e.event_name = 'User Activated'
THEN e.received_at
ELSE NULL END
) AS user_activated

是否可以将这样的条件添加到窗口函数中?

窗口函数不仅允许列,还允许任何表达式作为参数,因此您可以在此处轻松使用
CASE

first_value(case 
    when e.event_name = 'User Activated' 
    then e.received_at 
    end 
ignore nulls)
over (
    partition by e.user_id 
    order by e.received_at 
    rows between unbounded preceding and unbounded following) 
as first_event

窗口函数不仅允许列,还允许任何表达式作为参数,因此您可以轻松地使用
CASE

first_value(case 
    when e.event_name = 'User Activated' 
    then e.received_at 
    end 
ignore nulls)
over (
    partition by e.user_id 
    order by e.received_at 
    rows between unbounded preceding and unbounded following) 
as first_event

为什么不呢,你试过了吗
first\u value(当e.event\u name='User Activated'然后e.received\u结束时忽略null时的情况)
@AlexYes你完全正确。很抱歉问了一个愚蠢的问题,我仍然对这个问题耿耿于怀。请随意添加它作为答案,我会接受的。为什么不呢,你试过了吗
first\u value(当e.event\u name='User Activated'然后e.received\u结束时忽略null时的情况)
@AlexYes你完全正确。很抱歉问了一个愚蠢的问题,我仍然对这个问题耿耿于怀。请随意添加它作为答案,我会接受的。