mysql找出最大的天数_mysql 计算连续登录最大天数
--用户登录信息表
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 计算连续登录最大天数相关推荐
- mysql 连续天数_mysql计算连续天数,mysql连续登录天数,连续天数统计
mysql计算连续天数,mysql连续登录天数,连续天数统计 >>>>>>>>>>>>>>>>>& ...
- 计算连续登陆最大天数
计算连续登陆最大天数 原始数据: u0001 2019-10-10 u0001 2019-10-11 u0001 2019-10-12 u0001 2019-10-14 u0001 2019-10-1 ...
- 美团点评_给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。
给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度. import java.util.*; public class Meituan_4 {public static void ...
- mysql 获取天数_MySQL获取某月份的天数
1.last_day(curdate());获取当月最后一天. 2.DAYOFMONTH(last_day(curdate())); 返回date对应的该月日期.当然这就是当月的天数. 这就出来当月天 ...
- mysql找出两个结果集不同数据_如何快速对比MySQL两个不同实例上的数据并找出差异...
在MySQL运维中,研发同事想对比下两个不同实例上的数据并找出差异,除主键外还需要对比每一个字段,如何做呢? 第一种方案,写程序将两个实例上的每一行数据取出来进行对比,理论可行,但是对比时间较长. 第 ...
- MySQL找出未提交事务的信息
目录 一.processlist中的未提交事务 二.information_schema.innodb_trx中的未提交事务 三.performance_schema.events_statement ...
- MySQL: 找出员工表中最高、第二高、第N高的薪水
假设有如下所示的员工薪水表: 找出表中最高的薪水非常简单,编写下面的SQL即可: SELECT max(Salary) as HighestSalary FROM Employee; 利用查询的嵌套, ...
- mysql找出课程相同的两个学生_day41 mysql 学习 练习题重要
1.查询课程编号"001"比课程编号"002" 成绩高的所有学生的学号**** #把两个表同时放过来(并且都命名一个新的名字)一起查, #1先找出所有包含学科为 ...
- SQL——最大连续登录天数、当前连续登录天数、最大连续未登录天数问题、连续登陆N天用户、连续座位号
问题: 最大连续登录天数 当前连续登录天数 最大连续未登录天数 连续登陆3天用户(三种方法) 选出连续座位的编号 前三个问题所用数据: 原数据表:user_active表 表字段:用户.新增日期.活跃 ...
- mysql计算日期间隔天数_mysql 计算两个日期之间的天数
需求:求现在与指定日期之间相隔天数 首先创建一个包含时间字段的表格T如下: mysql> select * from T; +-------------+ | search_time | +-- ...
最新文章
- iOS技术篇1-CocoaPods
- 过椭圆外一点引两条切线方程_椭圆的一些结论汇总
- java命令行编译时提示找不到或无法加载主类的问题
- 物理光学1 波动方程与基础波函数
- Flutter web问题:Failed to load network image
- CocoaPods 的使用与一些异常情况的处理
- 学习的回顾--数组的有关内容
- 今天的凉爽的学习环境 录音软件
- 初学者指南:服务器基本技术名词
- 数据结构与算法基础-数组
- Java编程:按照指定的字段顺序,将 Bean 转换为 Json
- 集成电路设计——闩锁效应
- 几何画板椭圆九种画法_详解椭圆的五种画法,很全面!!!
- 总体、样本、样本的抽样分布
- virtual reality(虚拟现实)
- 【 开源计划 - Flutter组件 】 星星也可以如此闪耀 flutter_star
- java中stringBuilder的用法(转)
- 我是如何走进黑客世界的?
- Web Scraper爬虫
- Explorer.exe崩溃后自动重启任务栏托盘区图标丢失