--用户登录信息表
CREATE TABLE `user_log` (`user_id` varchar(10) NOT NULL,`log_in_date` date NOT NULL,PRIMARY KEY (`user_id`,`log_in_date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--插入测试数据
INSERT INTO `user_log` VALUES ('u_01', '2020-01-02');
INSERT INTO `user_log` VALUES ('u_01', '2020-01-04');
INSERT INTO `user_log` VALUES ('u_02', '2020-01-02');
INSERT INTO `user_log` VALUES ('u_03', '2020-01-02');
INSERT INTO `user_log` VALUES ('u_03', '2020-01-04');
INSERT INTO `user_log` VALUES ('u_04', '2020-01-02');
INSERT INTO `user_log` VALUES ('u_04', '2020-01-08');
INSERT INTO `user_log` VALUES ('u_05', '2020-01-02');
INSERT INTO `user_log` VALUES ('u_05', '2020-01-08');
INSERT INTO `user_log` VALUES ('u_06', '2020-01-04');
INSERT INTO `user_log` VALUES ('u_06', '2020-01-08');
INSERT INTO `user_log` VALUES ('u_07', '2020-01-04');
INSERT INTO `user_log` VALUES ('u_08', '2020-01-02');
INSERT INTO `user_log` VALUES ('u_08', '2020-01-04');
INSERT INTO `user_log` VALUES ('u_09', '2020-01-02');
INSERT INTO `user_log` VALUES ('u_10', '2020-01-02');
INSERT INTO `user_log` VALUES ('u_10', '2020-01-04');
INSERT INTO `user_log` VALUES ('u_11', '2020-01-03');
INSERT INTO `user_log` VALUES ('u_12', '2020-01-05');
INSERT INTO `user_log` VALUES ('u_13', '2020-01-09');
INSERT INTO `user_log` VALUES ('u_14', '2020-01-03');
INSERT INTO `user_log` VALUES ('u_14', '2020-01-05');
INSERT INTO `user_log` VALUES ('u_15', '2020-01-03');
INSERT INTO `user_log` VALUES ('u_15', '2020-01-05');
INSERT INTO `user_log` VALUES ('u_15', '2020-01-09');
INSERT INTO `user_log` VALUES ('u_16', '2020-01-03');
INSERT INTO `user_log` VALUES ('u_17', '2020-01-04');
INSERT INTO `user_log` VALUES ('u_18', '2020-01-04');
INSERT INTO `user_log` VALUES ('u_18', '2020-01-10');
INSERT INTO `user_log` VALUES ('u_19', '2020-01-06');
INSERT INTO `user_log` VALUES ('u_20', '2020-01-04');
INSERT INTO `user_log` VALUES ('u_20', '2020-01-06');
INSERT INTO `user_log` VALUES ('u0001', '2019-10-10');
INSERT INTO `user_log` VALUES ('u0001', '2019-10-11');
INSERT INTO `user_log` VALUES ('u0001', '2019-10-12');
INSERT INTO `user_log` VALUES ('u0001', '2019-10-14');
INSERT INTO `user_log` VALUES ('u0001', '2019-10-15');
INSERT INTO `user_log` VALUES ('u0001', '2019-10-17');
INSERT INTO `user_log` VALUES ('u0001', '2019-10-18');
INSERT INTO `user_log` VALUES ('u0001', '2019-10-19');
INSERT INTO `user_log` VALUES ('u0001', '2019-10-20');
INSERT INTO `user_log` VALUES ('u0002', '2019-10-20');--Step1 核心是按照访问时间进行排序,可用登录时间列减去(或加上)排序好的序列号,得到一个日期值,按该值分组计数即可。--按时间降序排列
select user_id,log_in_date,(row_number() over(partition by user_id order by log_in_date desc)) as 'rank'
from user_log--按时间升序排列
select user_id,log_in_date,(row_number() over(partition by user_id order by log_in_date asc)) as 'rank'
from user_log--用登录时间相减(或相加)排序好的序列号
selectuser_id,  DATE_ADD(log_in_date, INTERVAL row_number() over(partition by user_id order by log_in_date DESC ) day) AS 'add_time'
FROM user_log--连续登录次数
SELECT user_id, add_time,count(add_time) AS '连续登录天数'
FROM
(
selectuser_id,  DATE_ADD(log_in_date, INTERVAL row_number() over(partition  by  user_id order by log_in_date DESC ) day) AS 'add_time'
FROM user_log
)T
GROUP BY user_id, add_time--最大连续登录天数
SELECT user_id,MAX(连续登录天数)
FROM
(
SELECT user_id, add_time,count(add_time) AS '连续登录天数'
FROM
(
selectuser_id,  DATE_ADD(log_in_date, INTERVAL row_number() over(partition  by  user_id order by log_in_date DESC ) day) AS 'add_time'
FROM user_log
)T
GROUP BY user_id, add_time
)M--连续登录天数为2的用户
SELECT user_id
FROM
(
SELECT user_id, add_time,count(add_time) AS '连续登录天数'
FROM
(
selectuser_id,  DATE_ADD(log_in_date, INTERVAL row_number() over(partition  by  user_id order by log_in_date DESC ) day) AS 'add_time'
FROM user_log
)T
GROUP BY user_id, add_time
)M
where M.连续登录天数 = 2

mysql找出最大的天数_mysql 计算连续登录最大天数相关推荐

  1. mysql 连续天数_mysql计算连续天数,mysql连续登录天数,连续天数统计

    mysql计算连续天数,mysql连续登录天数,连续天数统计 >>>>>>>>>>>>>>>>>& ...

  2. 计算连续登陆最大天数

    计算连续登陆最大天数 原始数据: u0001 2019-10-10 u0001 2019-10-11 u0001 2019-10-12 u0001 2019-10-14 u0001 2019-10-1 ...

  3. 美团点评_给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。

    给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度. import java.util.*; public class Meituan_4 {public static void ...

  4. mysql 获取天数_MySQL获取某月份的天数

    1.last_day(curdate());获取当月最后一天. 2.DAYOFMONTH(last_day(curdate())); 返回date对应的该月日期.当然这就是当月的天数. 这就出来当月天 ...

  5. mysql找出两个结果集不同数据_如何快速对比MySQL两个不同实例上的数据并找出差异...

    在MySQL运维中,研发同事想对比下两个不同实例上的数据并找出差异,除主键外还需要对比每一个字段,如何做呢? 第一种方案,写程序将两个实例上的每一行数据取出来进行对比,理论可行,但是对比时间较长. 第 ...

  6. MySQL找出未提交事务的信息

    目录 一.processlist中的未提交事务 二.information_schema.innodb_trx中的未提交事务 三.performance_schema.events_statement ...

  7. MySQL: 找出员工表中最高、第二高、第N高的薪水

    假设有如下所示的员工薪水表: 找出表中最高的薪水非常简单,编写下面的SQL即可: SELECT max(Salary) as HighestSalary FROM Employee; 利用查询的嵌套, ...

  8. mysql找出课程相同的两个学生_day41 mysql 学习 练习题重要

    1.查询课程编号"001"比课程编号"002" 成绩高的所有学生的学号**** #把两个表同时放过来(并且都命名一个新的名字)一起查, #1先找出所有包含学科为 ...

  9. SQL——最大连续登录天数、当前连续登录天数、最大连续未登录天数问题、连续登陆N天用户、连续座位号

    问题: 最大连续登录天数 当前连续登录天数 最大连续未登录天数 连续登陆3天用户(三种方法) 选出连续座位的编号 前三个问题所用数据: 原数据表:user_active表 表字段:用户.新增日期.活跃 ...

  10. mysql计算日期间隔天数_mysql 计算两个日期之间的天数

    需求:求现在与指定日期之间相隔天数 首先创建一个包含时间字段的表格T如下: mysql> select * from T; +-------------+ | search_time | +-- ...

最新文章

  1. iOS技术篇1-CocoaPods
  2. 过椭圆外一点引两条切线方程_椭圆的一些结论汇总
  3. java命令行编译时提示找不到或无法加载主类的问题
  4. 物理光学1 波动方程与基础波函数
  5. Flutter web问题:Failed to load network image
  6. CocoaPods 的使用与一些异常情况的处理
  7. 学习的回顾--数组的有关内容
  8. 今天的凉爽的学习环境 录音软件
  9. 初学者指南:服务器基本技术名词
  10. 数据结构与算法基础-数组
  11. Java编程:按照指定的字段顺序,将 Bean 转换为 Json
  12. 集成电路设计——闩锁效应
  13. 几何画板椭圆九种画法_详解椭圆的五种画法,很全面!!!
  14. 总体、样本、样本的抽样分布
  15. virtual reality(虚拟现实)
  16. 【 开源计划 - Flutter组件 】 星星也可以如此闪耀 flutter_star
  17. java中stringBuilder的用法(转)
  18. 我是如何走进黑客世界的?
  19. Web Scraper爬虫
  20. Explorer.exe崩溃后自动重启任务栏托盘区图标丢失

热门文章

  1. PHP学习笔记1:基础知识快速浏览
  2. 修改android的avd路径方法
  3. LoggerFactory.getLogger
  4. iptables介绍与实践
  5. WYSISYN编辑器 Prosemirror 入门
  6. Ionic3学习笔记(二)主题化
  7. 开发者论坛一周精粹(第六期):阿里B2B研发管理难题如何应对?打造强有力的技术中台...
  8. avalon做的抽奖效果
  9. Exchange 2013学习(九),Autodiscover
  10. How Google Tests Software (出书,停止更新)