关于连续登录的问题探究
时间:2022-05-04
本文章向大家介绍关于连续登录的问题探究,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
经常会在数据统计中取筛选连续性的数据,比如筛选连续三个月都登录的用户,
数据形式如下:
1 111 222 333
2 111
3 111 222
4 111 444
大体的意思就是1 2 3 4代表月份1,2,3,4
111,222,333,444代表用户
1 111 222 333 代表一月份用户111 222 333登录了。
以此类推
如果要查找连续三个月登录的用户,我把数据结构进行了改进
1 111
1 222
1 333
2 111
3 111
3 222
4 111
4 444
这样就更符合关系型了。
我简单模拟了下。
SQL> create table test(id1 number,id2 number);
Table created.
SQL> select id2,id1 from test;
ID2 ID1
---------- ----------
111 1
222 1
333 1
111 2
111 3
222 3
111 4
444 4
--利用最大月份 减去 最小月份 +1 (不跨年的情况下),然后除去关联的月份数,如果是1,那就证明连续几个月就登录了
SQL> select id2,max(id1),min(id1),count(*),max(id1)-min(id1)+1 from test
2 group by id2 having (max(id1)-min(id1)+1)>2
3 /
ID2 MAX(ID1) MIN(ID1) COUNT(*) MAX(ID1)-MIN(ID1)+1
---------- ---------- ---------- ---------- -------------------
111 4 1 4 4
222 3 1 2 3
SQL> select id2,max(id1),min(id1),count(*),max(id1)-min(id1)+1 from test group by id2;
ID2 MAX(ID1) MIN(ID1) COUNT(*) MAX(ID1)-MIN(ID1)+1
---------- ---------- ---------- ---------- -------------------
111 4 1 4 4
222 3 1 2 3
333 1 1 1 1
444 4 4 1 1
一次延伸,如果要查询连续4个月的,那就更好办了。
连续4个月的
SQL> select id2,max(id1),min(id1),count(*),max(id1)-min(id1)+1 from test group by id2 having (max(id1)-min(id1)+1)/count(id1)=1 and count(id1)=4
2 /
ID2 MAX(ID1) MIN(ID1) COUNT(*) MAX(ID1)-MIN(ID1)+1
---------- ---------- ---------- ---------- -------------------
111
- 比特币——追忆霍乱时期的行情(1)
- 微信运营 企业版小程序开发的重要性及需要关注哪些方面
- ubuntu下nginx+php5的部署
- css2.1中的属性选择器(css高手请绕道)
- ubuntu下crontab编辑方法的设定
- apache网站访问缓慢的处理记录
- IIS7.5中神秘的ApplicationPoolIdentity
- Linux下快速迁移海量文件的操作记录
- Python注释用法
- windows 7 安装及.net开发环境搭建
- 沙特机器人获得公民身份?强人工智能时代还早呢!
- 整理了二个基本的css库(高手请绕道)
- 省钱提效做管理,医疗保健初创公司保持AI优势的四个方法
- Linux操作系统启动流程梳理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 浅谈多卡服务器下隐藏部分 GPU 和 TensorFlow 的显存使用设置
- 通过PHP设置BugFree获取邮箱通知
- Django封装交互接口代码
- 使用K.function()调试keras操作
- tensorflow图像裁剪进行数据增强操作
- ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
- Python+PyQt5+MySQL实现天气管理系统
- 浅谈Python协程
- Python logging模块异步线程写日志实现过程解析
- php-fpm重启导致的程序执行中断问题详解
- Python Socket TCP双端聊天功能实现过程详解
- django 将自带的数据库sqlite3改成mysql实例
- 利用python对mysql表做全局模糊搜索并分页实例
- PHP chop()函数讲解
- Linux下安装Memcached服务器和客户端与PHP使用示例