sql 连续活跃天数

这篇具有很好参考价值的文章主要介绍了sql 连续活跃天数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 背景

已知数据集为:
sql 连续活跃天数
目的:
计算每个uid的连续活跃天数,并且每一段活跃期内的开始时间和结束时间

2. 步骤

第一步:处理数据集
处理数据集,使其满足每个uid每个日期只有一条数据。
第二步:以uid为主键,按照日期进行排序,计算row_number.

SELECT  uid
          ,`征信查询日期`
          ,ROW_NUMBER() OVER(PARTITION BY uid ORDER BY `征信查询日期` ASC) AS `rn`
          ,first_value(`征信查询日期`)over(PARTITION BY uid ORDER BY `征信查询日期` ASC) `fir`
          ,first_value(`征信查询日期`)over(PARTITION BY uid ORDER BY `征信查询日期` desc) `las`
FROM   input

sql 连续活跃天数

两个关键点:

  1. 序号rn可以看做一直活跃的情况下,活跃日期最大值和活跃日期最小值之间的天数差。那么,日期最大值与日期最小值之差如果不等于序号,就表明中间有不连续。
  2. 用'征信查询日期' - rn 可以计算一列"关键列",连续时间段内,它的关键列值是一样的
select *,DATE_SUB(`征信查询日期`,`rn`) as `关键列` from (
SELECT  uid
          ,`征信查询日期`
          ,ROW_NUMBER() OVER(PARTITION BY uid ORDER BY `征信查询日期` ASC) AS `rn`
          ,first_value(`征信查询日期`)over(PARTITION BY uid ORDER BY `征信查询日期` ASC) `fir`
          ,first_value(`征信查询日期`)over(PARTITION BY uid ORDER BY `征信查询日期` desc) `las`
FROM   input)

sql 连续活跃天数
第三步:以uid和关键列作为主键。

select uid, `关键列`,count(*) as `连续活跃天数`, min(`征信查询日期`) as `活跃开始时间`, max(`征信查询日期`) as `活跃结束时间` from (
select *, DATE_SUB(`征信查询日期`,`rn`) as `关键列` from (
SELECT  uid
          ,`征信查询日期`
          ,ROW_NUMBER() OVER(PARTITION BY uid ORDER BY `征信查询日期` ASC) AS `rn`
          ,first_value(`征信查询日期`)over(PARTITION BY uid ORDER BY `征信查询日期` ASC) `fir`
          ,first_value(`征信查询日期`)over(PARTITION BY uid ORDER BY `征信查询日期` desc) `las`
FROM   input
  ) )group by uid, `关键列`

sql 连续活跃天数文章来源地址https://www.toymoban.com/news/detail-411570.html

到了这里,关于sql 连续活跃天数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从0开始学架构-架构设计的历史背景与目的

    机器语言-汇编语言-高级语言。 软件的规模和复杂度的大大增加,出现了两次软件危机。 第一次软件危机与结构化程序设计(20 世纪 60 年代~20 世纪 70 年代) 第二次软件危机与面向对象(20 世纪 80 年代) 随着软件系统规模的增加,计算相关的算法和数据结构不再构成主要的

    2024年02月13日
    浏览(50)
  • 大数据Flink(七十):SQL 动态表 & 连续查询

    文章目录 SQL 动态表 连续查询 一、​​​​​​​SQL 应用于流处理的思路

    2024年02月10日
    浏览(38)
  • 基于微信小程序的校园监考管理系统设计与实现课题背景、目的、意义

     目录 一、整体目录(示范): 文档含项目技术介绍、E-R图、数据字典、项目功能介绍与截图等 二、运行截图 三、代码部分(示范): 四、数据库表(示范): 数据库表有注释,可以导出数据字典及更新数据库时间,欢迎交流学习 五、主要技术介绍: 六、项目调试学习(点

    2024年01月22日
    浏览(58)
  • 【自驾旅游】基于微信小程序的自驾游课题研究背景、目的、意义

    目录 一、整体目录(示范): 文档含项目技术介绍、E-R图、数据字典、项目功能介绍与截图等 二、运行截图 三、代码部分(示范): 四、数据库表(示范): 数据库表有注释,可以导出数据字典及更新数据库时间,欢迎交流学习 五、主要技术介绍: 六、项目调试学习(点击

    2024年02月02日
    浏览(41)
  • 「SQL面试题库」 No_66 查询近30天活跃用户数

    「SQL面试题库」是由 不是西红柿 发起,全员免费参与的SQL学习活动。我每天发布1道SQL面试真题,从简单到困难,涵盖所有SQL知识点,我敢保证只要做完这100道题,不仅能轻松搞定面试,代码能力和工作效率也会有明显提升。 1.1 活动流程 整理题目 :西红柿每天无论刮风下雨

    2024年02月05日
    浏览(36)
  • java天数计算函数(当前月天数、某月总天数、某月剩余天数)4种方法实现

    1,Java8 LocalDate 2,利用日历函数 3,也是利用日历函数,但是不需要 throws ParseException 测试样例代码:   4,当月剩余天数 5,获取当前月天数 测试代码: 测试效果截图:  

    2024年02月12日
    浏览(37)
  • 【概率论与数理统计】猴博士 笔记 p21-23 二维连续型求边缘分布函数和密度函数,已知两个边缘密度函数求f(x,y)

    题型如下:给出F(x,y),让我们求F(x),F(y) 步骤: F X ( x ) = F ( x , + ∞ ) F Y ( y ) = F ( + ∞ , y ) F_X(x)=F(x,+∞) \\\\F_Y(y)=F(+∞,y) F X ​ ( x ) = F ( x , + ∞ ) F Y ​ ( y ) = F ( + ∞ , y ) 直接做上面那道例题: 题干:给出F(x,y),让我们求f(x),f(y) 方法: f X ( x ) = ∫ − ∞ + ∞ f ( x , y ) d y f Y ( y )

    2024年02月12日
    浏览(39)
  • 计算日期到天数的换算

    目录 1.题目概述 2.题解 思路分析 具体实现 根据输入的日期,计算是这一年的第几天。 输入描述: 输入一行,每行空格分割,分别是年,月,日 输出描述 : 输出是这一年的第几天 示例: 输入:1982 3 4 输出:63 将每个月的天数保存在一个数组中,若输入年份是闰年,则二月

    2024年02月13日
    浏览(44)
  • 【案例】js 计算日期之间的天数

    new Date(\\\'2023-03-06\\\') 作用是转换成标准时间,再进行计算的,而不是转换为字符串在进行计算,切记啊!! 代码看起来只是传值的时候不一样;而实际转换时有区别

    2024年02月06日
    浏览(45)
  • Java计算两个日期之间的天数差

    在Java中,我们可以使用Java 8引入的 java.time 包来处理日期和时间。下面是一种方法来计算两个日期之间的天数差。 首先,我们需要导入相关的类: 然后,我们可以编写一个方法来计算日期之间的天数差: 在这个方法中,我们使用了 ChronoUnit.DAYS.between 方法来计算两个 LocalDa

    2024年02月03日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包