2.查询至少连续三天下单的用户(连续登录问题求解)

思路分析:

(1)求出每个user_id对应的create_date明细数据并去重

(2)开窗求user_id分组下按照create_date的排序号row_num

(3)使用create_date与row_num求差值作为日期days字段,如果连续登录那么差值相同,

(4)按照user_id与days分组计数求数量大于3的user_id就是连续登录用户

代码实现:

sql 复制代码
select 
user_id
from(
        select 
        user_id,
            date_sub(create_date, row_num) as days
        from (
                select 
                user_id,
                    create_date,
                    ROW_NUMBER() over(partition by user_id order by create_date) as row_num
                from (
                        select 
                        user_id,
                            create_date
                        from order_info
                        GROUP BY user_id,
                            create_date
                    ) t0
            ) t1
    ) t2
group by user_id,
    days
having count(*) >= 3;
相关推荐
kejiayuan8 小时前
CTE更易懂的SQL风格
数据库·sql
PyHaVolask9 小时前
SQL注入漏洞原理
数据库·sql
2501_9335130410 小时前
Oracle统计分析某个SQL的执行频率
数据库·sql·oracle
l1t11 小时前
DeepSeek辅助编写的利用位掩码填充唯一候选数方法求解数独SQL
数据库·sql·算法·postgresql
冰暮流星12 小时前
sql语句之select语句的基本使用
数据库·sql·mysql
霖霖总总14 小时前
[小技巧15]深入解读 MySQL sql_mode:从原理到实践,规避常见坑
sql·mysql
菩提小狗14 小时前
SQL注入之sqlmap|web安全|渗透测试|网络安全
数据库·sql·web安全
m0_5981772315 小时前
SQL核心(1)
数据库·sql
DarkAthena15 小时前
【GaussDB】数据静止状态下同一个SQL或同一个存储过程执行第6次报错的问题排查
数据库·sql·gaussdb
l1t15 小时前
郭其先生利用DeepSeek实现的PostgreSQL递归CTE实现DFS写法
sql·算法·postgresql·深度优先