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;
相关推荐
还是做不到嘛\.2 小时前
Dvwa靶场-SQL Injection
数据库·sql·web安全
lifewange6 小时前
SQL 中 IN 和 AND 可以搭配使用么?
数据库·sql
lzhdim8 小时前
SQL 入门 7:SQL 聚合与分组:函数、GROUP BY 与 ROLLUP
java·服务器·数据库·sql·mysql
lifewange8 小时前
INSERT INTO ... SELECT ...
数据库·sql
Uso_Magic8 小时前
SQLSERVER__EXPLAIN 常用分析案例。
服务器·数据库·sql
程序员夏末13 小时前
【MySQL | 第二篇】 MVCC的底层实现(多版本并发控制)
数据库·sql·mysql
xcLeigh13 小时前
Oracle 迁移深度复盘:多数据库选型决策全解析
大数据·数据库·sql·oracle·数据迁移·数据管理
蓝黑202014 小时前
把数据库表里两列的值互换
数据库·sql·mysql
❀͜͡傀儡师14 小时前
docker部署开源的SQL审核平台Yearning
sql·docker·开源
hopsky14 小时前
Kingbase SQL 解析方案
数据库·sql