查询7天连续登陆用户这个问题很经典,解决方法也有很多,这里我讲一下笔者的方法,希望对大家有帮助。

具体思路:

1、因为每天用户登录次数可能不止一次,所以需要先将用户每天的登录日期去重。

2、再用row_number() over(partition by _ order by _)函数将用户id分组,按照登陆时间进行排序。

3、计算登录日期减去第二步骤得到的结果值,用户连续登陆情况下,每次相减的结果都相同。

4、按照id和日期分组并求和,筛选大于等于7的即为连续7天登陆的用户。

表信息如下图

第一步:用户登录日期去重

select DISTINCT date(date) as 日期,id from orde;

结果为:

第二步:用row_number() over()函数计数

select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a;

结果为:

第三步:日期减去计数值得到结果

select *,date(日期)-cum as 结果 from (select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a)b;

结果:

第四步:根据id和结果分组并计算总和,大于等于7的即为连续登陆7天的用户

select id,count(*) from (select *,date(日期)-cum as 结果 from (select *,row_number() over(PARTITION by id order by 日期) as cum from (select DISTINCT date(date) as 日期,id from orde)a)b)c GROUP BY id,结果 having count(*)>=7;

结果为:

用了多次嵌套查询,最终得到我们需要的结果。

mysql 连续七天不登录_【SQL】查询连续登陆7天以上的用户相关推荐

  1. mysql 连续七天不登录_使用MySQL窗口函数巧妙的解决用户连续登录天数等问题

    我们在工作中或者面试时,可能会遇到求出用户连续登录天数.连续签到天数等问题,这篇文章就是用窗口函数比较巧妙的解决这个问题的.文章比较长,建议先收藏后观看+_+ 首先是数据准备和处理 如下代码是创建用户 ...

  2. 非常实用的,使用SQL查询连续号码段。(做计费系统或SP的兄弟经常会用到)...

    非常实用的,使用SQL查询连续号码段.(做计费系统或SP的兄弟经常会用到) 数据库中如何使用SQL查询连续号码段 在[Database吧]上有一则非常巧妙的SQL技巧,学习一下,记录在这里. 最初的问 ...

  3. oracle号码段拆开,学习-SQL查询连续号码段的巧妙解法

    学习-SQL查询连续号码段的巧妙解法 在ITPUB上有一则非常巧妙的SQL技巧,学习一下,记录在这里. 最初的问题是这样的:我有一个表结构, fphm,kshm 2014,00000001 2014, ...

  4. Hive sql : 查询连续登录天数

    查询连续登录天数 1.问题描述 2.在Hive中建表 3.查询最大连续登录天数 1.问题描述 目前有两列数据,分别是用户ID和用户登录的时间,现需要统计用户连续登录的最大天数,中间如有断开,则不算连续 ...

  5. mysql如何输入空密码登录_允许phpmyadmin空密码登录的配置方法

    在Mysql修改root密码的命令及方法一文中,我提到了使用phpmyadmin修改Mysql的   root密码的方法,但是当你将phpmyadmin登录密码设置为空密码时,尽管你通过Mysql   ...

  6. MySQL番外篇:一条SQL查询语句是如何执行的?

    在面试的过程中,有的面试官会给出一条简单的SQL查询语句,让简单说一下执行的过程. SELECT * FROM emp where age=30; 以下问MySQL的基本架构图,从中可以看出SQL语句 ...

  7. php mysql 中文字段名_php mssql扩展SQL查询中文字段名解决方法

    一.问题: 数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名 ...

  8. mysql general clomun_几个简单的sql查询

    1.原字段加字符串更新(concat) UPDATE table_name SET clomun = concat(clomun,str) WHERE 1=1 ''; 2.根据不同条件查询同一字段的s ...

  9. mysql查询连续三天100以上_一个SQL查询连续三天的流量100以上的数据值【SQql Server】...

    题目 有一个商场,每日人流量信息被记录在这三列信息中:序号 (id).日期 (date). 人流量 (people).请编写一个查询语句,找出高峰期时段,要求连续三天及以上,并且每天人流量均不少于10 ...

最新文章

  1. 现代密码学5.2--域扩张:Merkle-Damgard Transform
  2. C#计算两个时间的差
  3. 6段Python代码刻画深度学习历史:从最小二乘法到深度神经网络
  4. VUE config/index.js文件配置
  5. tensorflow2.0 Dataset创建和使用
  6. 【Python】Numpy包的安装使用
  7. 基于顺序存储结构的图书信息表的新图书的入库(C++)
  8. resultMap与resultType、parameterMap与 parameterType的区别
  9. 人工智能作业——搜索树博弈树一阶逻辑表达式CNF范式
  10. Linux知识汇总 (二)
  11. linux 韦恩图两个,如何使用R来绘制韦恩图(Venn Diagram)
  12. 数据链路层LLDP协议
  13. erp生产管理系统对电子工厂发挥的作用
  14. GPS原理与接收机————GPS信号及其导航电文
  15. oracle语句报错 * ERROR at line 2: ORA-00923: FROM keyword not found where expected
  16. ProxySQL 排错 Max connect timeout reached while reaching hostgroup 10 after 10000ms
  17. ADO/ADO.NET
  18. 关于 三相可控硅触发板 晶闸管整流调压控制板
  19. ArcGIS10.2下载安装 License Manager、ArcGIS Desktop、ArcGIS Server软件下载及破解
  20. 解决Failed to open .ini file C:\Users\xxx\.android\emu-update-last-check.ini for writing.

热门文章

  1. C语言练习,利用求阶乘函数Fact(),编程计算并输出从1到n之间所有数的阶乘值。
  2. 世界人工智能融合发展大会开幕 山东AI产业未来可期
  3. java模拟HTTP请求(集合了网上搜来的各种)
  4. asp.net的aspx页面<% %>、<%@ %>、<%# %>、<%= %>、<%$ %>的用法
  5. Python输出16进制不带0x补零,整数转16进制,字符串转16进制
  6. 【机器学习】Jackknife,Bootstraping, bagging, boosting, AdaBoosting, Rand forest 和 gradient boosting...
  7. 解读华为云应用平台ROMA,黑科技实现一站式政企上云
  8. 简单的图像几何校正实践
  9. JSONObject.parseObject
  10. perl中grep用法总结 z