热门标签 | 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



推荐阅读
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 思科IOS XE与ISE集成实现TACACS认证配置
    本文详细介绍了如何在思科IOS XE设备上配置TACACS认证,并通过ISE(Identity Services Engine)进行用户管理和授权。配置包括网络拓扑、设备设置和ISE端的具体步骤。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • 在什么情况下MySQL的可重复读隔离级别会导致幻读现象? ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战
    OpenAI首席执行官Sam Altman展望:人工智能的未来发展方向与挑战 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 在Java程序设计中,实现高效的分页功能是提升应用性能的关键之一。本文介绍了通过使用 `PageController` 类来处理大数据集的分页操作,该类能够从一个较大的集合中提取出指定大小的小集合。具体实现中,通过优化数据访问和减少内存消耗,确保了分页操作的高效性和稳定性。此外,文章还探讨了分页算法的优化策略,包括缓存机制和懒加载技术的应用,以进一步提高系统的响应速度和用户体验。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在PHP中,高效地分割字符串是一项常见的需求。本文探讨了多种技术,用于在特定字符(如“或”)后进行字符串分割。通过使用正则表达式和内置函数,可以实现更加灵活和高效的字符串处理。例如,可以使用 `preg_split` 函数来实现这一目标,该函数允许指定复杂的分隔符模式,从而提高代码的可读性和性能。此外,文章还介绍了如何优化分割操作以减少内存消耗和提高执行速度。 ... [详细]
  • MyISAM和InnoDB是MySQL中最为广泛使用的两种存储引擎,每种引擎都有其独特的优势和适用场景。MyISAM引擎以其简单的结构和高效的读取速度著称,适用于以读操作为主、对事务支持要求不高的应用。而InnoDB引擎则以其强大的事务处理能力和行级锁定机制,在需要高并发写操作和数据完整性的场景下表现出色。选择合适的存储引擎应综合考虑业务需求、性能要求和数据一致性等因素。 ... [详细]
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
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社区 版权所有