开发者社区> 问答> 正文

用户访问日志表 visit_log ,如何获取连续访问大于或等于 2 天的用户?

用户访问日志表 visit_log ,每一行数据表示一条用户访问日志。如何获取连续访问大于或等于 2 天的用户?

SQL - 17
with visit_log as (
select stack (
6,
'2024-01-01', '101', '湖北', '武汉', 'Android',
'2024-01-01', '102', '湖南', '长沙', 'IOS',
'2024-01-01', '103', '四川', '成都', 'Windows',
'2024-01-02', '101', '湖北', '孝感', 'Mac',
'2024-01-02', '102', '湖南', '邵阳', 'Android',
'2024-01-03', '101', '湖北', '武汉', 'IOS'
) 
-- 字段:日期,用户,省份,城市,设备类型
as (dt, user_id, province, city, device_type)
)
select * from visit_log;

展开
收起
真的很搞笑 2024-05-07 19:15:53 46 0
1 条回答
写回答
取消 提交回答
  • 整体实现比较简单。

    -- SQL - 18
    select user_id
    from (
    select 
    *,
    lag(dt, 2 - 1) over (partition by user_id order by dt) as lag_dt
    from (select dt, user_id from visit_log group by dt, user_id) t0
    ) t1
    where datediff(dt, lag_dt) + 1 = 2
    group by user_id;
    

    image.png

    2024-05-07 20:35:00
    赞同 4 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载