繁体   English   中英

SQL windows 功能 LEAD/LAG 但只考虑某些值?

[英]SQL windows functions LEAD/LAG but only taking certain values into account?

假设您有一个应用程序,并且想知道每次安装是否可以归因于新用户或回访用户。
因此,您要检查每个安装的 ID 是否有登录或注册事件,以较早者为准。
您将如何从左表到右表 go?
如果我能说的话,使用 window function 会很容易:

 LAG(event,1) OVER (PARTITION BY id ORDER by event_timestamp)   

+但跳过“安装”事件,跳过它们

在此处输入图像描述

您将使用lead(ignore nulls)

select t.*
from (select t.*,
             lead(case when event <> 'install' then event end ignore nulls) over (partition by id order by timestamp) as next_event
      from t
     ) t
where event = 'install';

ignore nulls选项是标准的 SQL 但是,并非所有数据库都支持它。 此类数据库中通常还有其他选项,但没有数据库标签,建议使用标准 SQL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM