首页 > 其他分享 >连续登录问题

连续登录问题

时间:2023-12-14 11:33:19浏览次数:29  
标签:cnt 登录 userid 问题 连续 time login select

数据库中有个表的表名叫userlogin_info,有三个字段,id(索引)、userid(用户id)、login_time(登录时间),用户每登录一次APP会往这个表写入一条记录。

问题1:2022年1月中连续7天登录的用户数有哪些?(1至7号连续、或者2至8号连续等)

with t_login as 
(
    select userid,date_sub(login_time,row_cnt) as flag_time 
    from 
    (
        select userid,login_time,row_number over(partition by userid order by login_time) as row_cnt
        from 
        (
            select userid,login_time
            from 
            (
                select id,userid,from_unixtime(unix_timestamp(login_time,'yyyy-MM-dd HH:mm:ss'),'yyyyMMdd') as login_time
                from userlogin_info
            )
            where login_time between 20220101 and 20220131
            group by userid,login_time
        )
    )
)
select userid
from 
(
    select userid,flag_time,count(1) as login_cnt
    from t_login
    group by userid,flag_time
    having login_cnt>=7
)
group by userid

 

问题2:2022年1月中连续7天登录的用户数有多少?(1至7号连续、或者2至8号连续等)

with t_login as 
(
    select userid,date_sub(login_time,row_cnt) as flag_time 
    from 
    (
        select userid,login_time,row_number over(partition by userid order by login_time) as row_cnt
        from 
        (
            select userid,login_time
            from 
            (
                select id,userid,from_unixtime(unix_timestamp(login_time,'yyyy-MM-dd HH:mm:ss'),'yyyyMMdd') as login_time
                from userlogin_info
            )
            where login_time between 20220101 and 20220131
            group by userid,login_time
        )
    )
)
select count(distinct userid) as login_uv 
from 
(
    select userid,flag_time,count(1) as login_cnt
    from t_login
    group by userid,flag_time
    having login_cnt>=7
)

 

解析:

1、对用户(userid)以及登录日期(login_time/天)进行去重,明确用户改天是否有登录

2、用排序函数对用户(userid) 按登录日期(login_time)进行排序得到(row_cnt)

3、用日期函数登录日期(login_time)减去排序的序号(row_cnt),得到flag_time,如果用户连续登录,则flag_time的计算结果是相同的,反则没有连续登录
4、对用户(userid)以及flag_time进行去重,进行count()聚合计算,筛选出登录次数>=7的用户

 

标签:cnt,登录,userid,问题,连续,time,login,select
From: https://www.cnblogs.com/ZeroITStudy/p/17900846.html

相关文章

  • MySQL左连接丢失null值的问题
    一、前言我们有的时候直接使用左连接查询,当右表不存在该数据的时候,是可以查出带有null的列。可是当在where条件中有右表相关的筛选条件时,我们惊奇的发现查询的结果不带null值了,换句话说就是查出来的结果比预期的少。二、错误复现以及解决方案1、右表不带筛选条件的查询sql相关......
  • 【Python】人工智能-机器学习——不调库手撕贝叶斯分类问题
    1.作业内容描述1.1背景数据集大小150该数据有4个属性,分别如下Sepal.Length:花萼长度(cm)Sepal.Width:花萼宽度单位(cm)Petal.Length:花瓣长度(cm)Petal.Width:花瓣宽度(cm)category:类别(IrisSetosa\IrisVersicolour\IrisVirginica)1.2要求在不调用机器学习库的情......
  • Vue + Element UI 实现复制当前行数据功能(复制到新增页面组件值不能更新等问题解决)
    1、需求使用Vue+ElementUI实现在列表的操作栏新增一个复制按钮,复制当前行的数据可以打开新增弹窗后亦可以跳转到新增页面,本文实现为跳转到新增页面。2、实现1)列表页index.vue<el-table><!--其他列--><el-table-columnlabel="操作"width="150"><templateslot-scope=......
  • python使用paillier过程中遇到的问题及解决方案记录
    OverflowError:Overflowdetectedindecryptednumber错误表明在解密操作中检测到了溢出。这可能是由于解密的结果超过了Paillier密码系统的容量。以下是一些可能导致溢出的原因和解决方法:密钥长度不足:密钥长度决定了可以处理的数字范围。如果你使用的是较短的密钥,它可......
  • 解决Ubuntu系统在Vmware中重启后丢失网络图标和服务的问题
    问题如上。解决方法:先关掉NetworkManager:sudoserviceNetworkManagerstop用gedit打开NetworkManager.statesudogedit/var/lib/NetworkManager/NetworkManager.state改成如下:重启NetworkManager:sudoserviceNetworkManagerrestart完成注意:不同版本的U......
  • 解决mysql的语句中group_concat长度限制问题
    在mysql中,有个函数叫“group_concat”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了。其实MYSQL内部对这个是有设置的,默认不设置的长度是1024。查看默认配置showvariableslike"group_concat_max_len";模板返回是Variable_nameValuegroup_co......
  • 【Python爬虫】Scrapy框架处理分页爬取+cookie登录_17k小说网
    简介本文主要讲常规分页爬取与利用Scrapy框架怎么快捷的爬取分页的数据以及cookie登录,案例网站时17k小说网,url是https://www.17k.com/常规分页爬取Scrapy框架分页爬取cookie登录分页常规分页爬取常规分页爬取,直接观察页面数据,一共有多少页数据,就for循环多少次classXiao......
  • PHP连接SQLSERVER及中文乱码问题
    PHP连接SQLSERVER1、PHP5.3及以后版本不再支持mssql模块,应使用SQLSRV或PDO_SQLSRV;2、下载PHP驱动程序。 http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx 内含Windows平台各种版本扩展文件,支持SQL2005及以上版本3、复制所需文件如:php_sqlsrv_73_nts_x64.dll(PHP......
  • 关于java的多态方法调用顺序的问题
    使用父类类型的引用指向子类的对象,该引用调用的师父类中定义的方法和变量,变量不能被重写(覆盖);如果子类中重写了父类中的一个方法,那么在调用这个方法的时候,将会调用子类中的这个方法;注意特殊情况,如果该父类引用所调用的方法参数列表未定义,就调用该父类的父类中查找,如果还没找到就强......
  • fusion accessR6本地挂载光驱的Java环境问题
    fusion access版本:R6外部操作环境:windows7准备制作的模版:windows7 旗舰版64 办公软件:office2010tools:ultraiso,firefox33,360万能网卡驱动本地挂载光驱的Java环境问题:安装完模板虚拟机后网卡无法识别,需要安装网卡驱动,由于没有IP地址,只能使用光驱本地挂载。解决方案:......