开发者社区> 问答> 正文

用户访问日志表 visit_log ,每一行数据表示一条用户访问日志。如何基于相邻日期差实现?

用户访问日志表 visit_log ,每一行数据表示一条用户访问日志。如何基于相邻日期差实现?(排序版)

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:51 46 0
1 条回答
写回答
取消 提交回答
  • 整体实现比较简单。

    -- SQL - 19
    select user_id
    from (
    select *, 
    dense_rank() over (partition by user_id order by dt) as dr
    from visit_log
    ) t1
    where datediff(dt, date_add(dt, 1 - dr)) + 1 = 2
    group by user_id;
    

    image.png

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

相关电子书

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