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;
相关推荐
swordbob44 分钟前
MySQL字符集陷阱:从Oracle迁移踩坑到utf8mb4强制规范
数据库·sql
十五年专注C++开发1 小时前
MySql中各种功能用sql语句实现总结
数据库·sql·mysql
Gauss松鼠会4 小时前
【GaussDB】GaussDB重要通信参数汇总
服务器·网络·数据库·sql·性能优化·gaussdb·经验总结
IvorySQL4 小时前
PostgreSQL 技术日报 (6月9日)|PL/SQL 迁移自动化,前沿峰会即将启幕
sql·postgresql·自动化
NineData5 小时前
SQL 都在等锁时,ChatDBA 先帮 MySQL 找到谁在挡路
数据库·人工智能·sql·mysql·安全·数据复制·数据迁移工具
Gauss松鼠会5 小时前
【GaussDB】GaussDB SMP特性调优详解
java·服务器·前端·数据库·sql·算法·gaussdb
别叫我老干部5 小时前
博客 / CMS 数据库表结构设计
sql
这个DBA有点耶7 小时前
时序数据库选型:吞吐、压缩与查询延迟的均衡之术
数据库·sql·架构·时序数据库·dba
invicinble8 小时前
sql层面语法的总结(mysql层面语法,主要侧重于sql的查询相关的信息量积累)
sql·mysql·oracle
suoyue_zhan8 小时前
SQL经典案例之数据库的CTE递归循环使用
数据库·sql