SQL面试题练习 —— 统计最大连续登录天数区间

1 题目


2 建表语句


CREATE TABLE IF NOT EXISTS user_login_tb (
    uid INT,
    login_date DATE
);
insert into user_login_tb(uid, login_date) values
	( 1, '2022-08-02')
	,(1, '2022-08-03')
	,(2, '2022-08-03')
	,(2, '2022-08-04')
	,(2, '2022-08-05')
	,(2, '2022-08-05')
	,(3, '2022-08-05')
	,(2, '2022-08-06')
	,(4, '2022-08-06')
	,(4, '2022-08-07');

3 题解


WITH t AS (SELECT uid,
                  login_date,
                  ROW_NUMBER() OVER (PARTITION BY uid ORDER BY login_date) AS rn
           FROM user_login_tb
           group by uid, login_date -- 一个用户一天可能多次登录
)
SELECT part                AS days_range,
       COUNT(DISTINCT uid) AS user_num
FROM (SELECT uid,
             dd,
             COUNT(*) AS cnd,
             CASE
                 WHEN COUNT(*) < 2 THEN '未连续登录'
                 WHEN COUNT(*) < 4 THEN '连续登录2~3天'
                 WHEN COUNT(*) < 8 THEN '连续登录4~7天'
                 ELSE '连续登录大于7天'
                 END  AS part
      FROM (SELECT *,
                   DATE_SUB(login_date, rn) AS dd
            FROM t) t1
      GROUP BY uid, dd) t2
GROUP BY part
-- 记住sql的执行顺序
-- FROM -> JOIN -> ON -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> ORDER BY -> LIMIT
ORDER BY user_num DESC;

执行结果

在这里插入图片描述

相关推荐

  1. SQL面试挑战02:同时在线人数问题

    2024-07-18 03:20:03       59 阅读
  2. sql连续登录

    2024-07-18 03:20:03       26 阅读
  3. LeetCode练习与总结:连续序列--128

    2024-07-18 03:20:03       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 03:20:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 03:20:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 03:20:03       58 阅读
  4. Python语言-面向对象

    2024-07-18 03:20:03       69 阅读

热门阅读

  1. (77)组合环路--->(01)组合环路介绍

    2024-07-18 03:20:03       20 阅读
  2. 开发扫地机器人系统时无法兼容手机解决方案

    2024-07-18 03:20:03       22 阅读
  3. Spring源码-读取XML文件配置信息

    2024-07-18 03:20:03       19 阅读
  4. 使用 Django 框架进行开发的基本模板

    2024-07-18 03:20:03       21 阅读
  5. ubuntu安装mininet-wifi

    2024-07-18 03:20:03       20 阅读
  6. VPN介绍

    2024-07-18 03:20:03       21 阅读
  7. Ubuntu下如何设置程序include搜索路径及链接路径

    2024-07-18 03:20:03       24 阅读
  8. 生成式 AI 的发展方向,是 Chat 还是 Agent?

    2024-07-18 03:20:03       25 阅读