热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php求两个日期的间隔天数怎么算_连续登陆人数天数问题

有时候我们会碰到连续登录人数计算的问题,比如想要求下面这两个问题的结果,该怎么求?最近连续登陆天数任意时间段内连续登陆天数最近连续登陆超过
e4b914b843b198e263daa172ee73af69.png

有时候我们会碰到连续登录人数计算的问题,比如想要求下面这两个问题的结果,该怎么求?

  1. 最近连续登陆天数
  2. 任意时间段内连续登陆天数
  3. 最近连续登陆超过x天的人数

原始数据给你:

name表示用户,date表示登陆的日期
42e22ce647d5f2fc431679c82b51617d.png

最近连续登陆天数计算实现方式:

select name,count(1) as `用户最近连续登陆天数`
from (select name,date,first_value(date) over (partition by name order by date desc) as last_login_date -- 用户最近登陆日期,DATE_ADD(first_value(date) over (partition by name order by date desc) -- 用户最近登陆日期,INTERVAL -row_number() over (partition by name order by date desc)+1 day) date_line -- 以用户最近登陆日期做降序排序,算出连续间隔1、2、3...n天的日期from aaa
) t
where date = date_line -- 限制 date = date_line 得到用户最近连续活跃日期
group by name

计算过程:

1.用户最近登陆日期;

2.以用户最近登陆日期做降序排序,算出连续间隔1、2、3...n天的日期,得到一列date_line字段;

385f87fee28eaf3588437138115a8b1b.png

3.此时,如果我们限制date=date_line,就已经得到用户最近连续活跃日期了;

cf680c101a10dea649b7984650da9ac2.png

4.使用上面的结果汇总一下,"用户最近连续登陆天数"结果就出来了(通过此结果还能计算“最近连续登陆超过x天的人数”):

7cca8a0938a23203bad6b06720ea6027.png

下面这个实现方式稍微复杂一些,但不仅是能计算“最近的连续登陆天数”,还能算“任意时间段的连续登陆天数”,扩展性更强:

实现脚本:

with t as(select *,min(last_date) over (partition by name order by date desc) as date_setfrom (select name,date,if(DATEDIFF(lag(date) over (partition by name order by date desc),date)=1,null,date) as last_datefrom aaa) t
)
select name,date_set,count(*) as `连续登陆天数`
from t
-- where date_group='2020-10-19' 最近一天登陆用户的连续登陆天数
group by name,date_set

计算过程:

1.把同一用户的连续登陆日期放到一块,派生出连续登陆日期组的最后日期,作为下游统计时用的分组:

b1f821d08eb73b3cee80a9769a466a16.png

2.以用户和“连续日期组”作分组汇总,得到用户在该组下面的连续登陆天数(通过此结果还能计算“某段时间内连续登陆超过x天的人数”)。

bbeb0077d48e6971e3c8068b7fdfc340.png



推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • Python15行代码实现免费发送手机短信,推送消息「建议收藏」
    Python15行代码实现免费发 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
author-avatar
半邪书生66_516
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有