博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于连续登录的问题探究
阅读量:2445 次
发布时间:2019-05-10

本文共 1455 字,大约阅读时间需要 4 分钟。

经常会在数据统计中取筛选连续性的数据,比如筛选连续三个月都登录的用户,
数据形式如下:
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  

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-772898/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23718752/viewspace-772898/

你可能感兴趣的文章
gmail_Gmail将提供自毁电子邮件
查看>>
google 禁止广告_是否应禁止针对个人的广告?
查看>>
Plover.io在本地设备之间快速共享文件
查看>>
如何在OS X照片中禁用iCloud照片同步
查看>>
Minecraft的官方网站分发了受恶意软件感染的皮肤
查看>>
word模板快速填内容_如何快速轻松地在Word中选择内容块
查看>>
如何在Word 2013中直接从一个表导航到另一个表
查看>>
twitch 录像_如何通过NVIDIA GeForce Experience将您的PC游戏玩法传送到Twitch
查看>>
linux gnome_在Gnome中学习这些鼠标技巧,以获得更高效的Linux体验
查看>>
打印机疑难解答_使用内置电源疑难解答改善Windows 7中的电池寿命
查看>>
drupal加密_立即更新您的Drupal网站,否则黑客可能将其变成加密货币矿工
查看>>
vimrc配置 鼠标光标_在“提示”框中:即时调整窗口大小,包含鼠标光标并了解电池配置...
查看>>
询问HTG:安装XBMC附加组件,缩小视频以进行移动播放,自动更改默认打印机
查看>>
High Sierra推出后如何离开macOS公开Beta
查看>>
如何格式化您的WhatsApp消息
查看>>
pixel2pixel_Pixel 2的视觉核心是什么?
查看>>
更改用户账户设置自动更改_您应该更改的5个SimpliSafe设置
查看>>
excel中转换为数值_如何在Microsoft Excel中转换货币
查看>>
netflix怎么上_如何在Netflix上隐藏电视节目和电影
查看>>
opera_从Opera快速拨号页上删除混乱
查看>>