首页
学习
活动
专区
圈层
工具
发布

Sql如何统计连续打卡天数

总第208篇/张俊红 今天来解一道题面试中可能经常会被一些面试官拿来“刁难”的题,就是《如何统计连续打卡天数》,当然了这里面的打卡可以换成任意其他行为,比如连续登陆天数,连续学习天数,连续购买天数,这里的天数也是可以换成小时或者别的时间单位的...到这里,如果我们要获取连续打卡天数是不是就很容易了。 不过这里面还有一个问题,就是连续打卡天数是截止目前最近的一个 连续打卡天数还是历史坚持最长的打卡天数,这就是传说中的口径问题哈。.../2/3 1 1 2020/2/4 1 1 2020/2/5 1 1 2020/2/6 0 1 2020/2/7 1 1 2020/2/8 1 上面这个例子中,最近连续打卡天数是2,历史最长的连续打卡天数却是...,我们只需要把上表中day_cha这一列最大的值对应的flag_days取出来就可以;要获取历史最久的连续打卡天数,我们只需要把上表中flag_days的最大值取出来就可以。...类似的需求可能还有获取过去连续打卡天数大于某个值得人,只需要筛选上表中的flag_days即可达到目的。

3.8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用SQL计算用户连续登录天数

    上次我们根据用户创建账号和登录日志进行了《用SQL进行用户留存率计算》,今天我们继续用这份用户登录日志来计算用户连续登录天数。 1....数据预览 这里我们用到的是用户登录的日志,其中用户每天可能存在多次登录。 用户登录日志 用户登录 以上案例数据 后台回复 955 可以在SQL文件夹里data领取 2....《『数据分析』pandas计算连续行为天数的几种思路》 《利用Python统计连续登录N天或以上用户》 今天,我们用SQL来进行本次的操作,大致分为以下几步: 数据去重 SELECT DISTINCT...$part_date date FROM role_login ) temp_1 再用登录日期和排序序号进行差值计算(DATE_SUB),并按照用id和差值进行分组计数(这就是用户的连续登录天数...role_login ) temp_1 ) temp_2 GROUP BY role_id, DATE_SUB(date,INTERVAL sort DAY) 最后取每个用户id的连续登录天数的最大值即可

    4.4K30

    PowerBI 连续天数通用计算模型

    业务过程中,经常遇到需要计算连续天数的场景,比如:连续打卡天数、连续评优的同学、连续下单的客户等。 那么,计算连续天数是否有通用的模型呢?答案是肯定的。...filterT = FILTER('ratings',[level]="A") 分组 这里用到了计算连续天数的一个算法: 将 业务日期距离某固定日期的天数 与 业务表中大于当前业务日期的天数进行求和,...如果得数相同,则相应的业务日期是连续的。...计算连续天数 上面已经计算了连续天数分组标记 group ,将分组标记进行 行计数,即可得到每个业务对象的连续分组天数 successiveDays = SUMMARIZE( 'groupT'..., 'groupT'[name], 'groupT'[group], "rowCNT", COUNTROWS('groupT') ) 计算最大连续天数 某些需求场景下,需要计算每个业务对象的最大连续天数

    1.4K00

    2.21 PowerBI数据建模-连续进货天数

    有一张销售表,需要统计:1 按客户的最大连续进货天数;2 连续2天及以上进货的客户数。解决方案首先计算当前进货的最近一次未进货日期,然后用当前进货日期减去这个日期就得到连续进货天数了。...有了连续进货天数,按日期可以得出最大连续进货天数,然后再按客户可以得出按客户的最大连续进货天数,最后取按客户的最大连续进货天数大于等于2的客户数就很容易了。...连续进货天数 = DATEDIFF([最近未进货日期],MAX('销售表'[日期]),DAY)按日期最大连续进货天数:取所选日期范围内,连续进货天数的最大值。...按日期最大连续进货天数 = MAXX(VALUES('日期表'[Date]),[连续进货天数])按客户最大连续进货天数:取所选客户中,每个客户的最大连续进货天数的最大值。...按客户最大连续进货天数 = MAXX(VALUES('客户表'[客户]),[按日期最大连续进货天数])连续进货2天以上的客户数:取所选客户中,每个客户的最大连续进货天数>=2的客户数。

    38200

    MySQL高阶-统计每周连续出现天数

    还是昨天的问题,统计每周内问题小区连续出现天数,MySQL可以实现吗?答案是肯定的,就是过程很曲折。 数据库查询语言基本都是针对整列的,不像excel是单元格粒度的,要判断行与行之间的差异比较麻烦。...--+--------+--------+------------+ 13 rows in set (0.00 sec) 现在使用一种算法来判决每周持续出现,用week()获取日期所在周数,使用下图的逻辑判断连续出现...首先获取当前日期与一个较早的日期的差值 计算表中大于等于当前日期的行数 两个值求和,求和相等则为连续出现,否则为间隔出现 SQL 呼之欲出 mysql> select -> bc.cellid,...,再加上周数,就是每周持续天数 完整代码如下: mysql> select -> bc.cellid, -> bc.cgi, -> count(*) as `con_days`,...---+----------+---------+------------+------------+------+ 7 rows in set (0.00 sec) 如上,利用MySQL获取了每周连续出现天数

    2.4K20

    hive sql(六)—— 每个用户连续登录最大天数

    需求 每个用户连续登录最大天数 建表语句 create table login( id string, rq string ) row format delimited fields terminated...by '\t' ; 数据 #这里将数据分开,便于直观看到连续登录天数 insert into table login values (1,"2019-07-26"), (1,"2019-07-27")...,所以时间信息,并按照升序,需要在窗口里面添加order by 3、核心逻辑——连续登录的判断是,通过排序添加序号,再用当前日期和当前序号做差, 如果得到日期相同,则表示是连续日期,所以使用row_number...,第二次分组是统计差值日期相同数量,第三次分组是统计每个用户最大连续登录天数 知识点 1、row_number添加序号,无论字段值是否相同 2、date_sub(日期,数值),用日期-数值,即当前日期的前...n天,返回值是日期字符串类型 分析中第3点在hive sql系列(三)中计算连续日活中也用到了日期差值,参考链接: hive sql(三)—— 求所有用户和活跃用户的总数及平均年龄

    3.9K40

    『数据分析』pandas计算连续行为天数的几种思路

    我们的第72篇原创 作者:才哥 ---- ☆ 大家好,我是才哥。 最近在处理数据的时候遇到一个需求,核心就是求取最大连续行为天数。...求连续污染持续天数 结合上次的《利用Python统计连续登录N天或以上用户》案例,我们这里再提供1种新的解题思路,合计2种解题思路。 以下解法来自小明哥和才哥 2.1....{x.max()}', # 求起止日期 '空气质量':"count", # 求连续天数 }).nlargest(5,'空气质量') # 取 空气质量 字段最大的前5组数据 ?...图7:辅助列值预览 我们可以发现,按照辅助列分组进行计数即可获得连续污染天数,如上红色标记区域。...图10:思路2的解法2小明哥结果 以上就是本次全部内容,其实我们在日常工作生活中还可能遇到类似场景如:计算用户连续登录天数、计算用户连续付费天数、计算南方梅雨季节连续下雨天数等等!

    8.8K11

    Excel巧算连续打卡最长的天数

    然而,有时由于各种原因,我们可能偶尔会中断打卡,那么,我们要知道在打卡记录中,连续打卡(也就是坚持)的最长天数,应该怎么做呢?这就是今天我们想要用公式来解决的问题。 示例数据如下图1所示。...希望使用公式得到: 1.连续打卡的最长天数 2.最长坚持打卡是从哪里开始的 这里的关键是找出由TRUE变到FALSE或者由FALSE变到TRUE的位置。可以错位比较,找出单元格值变化的位置。...),B5:B245),0) 在其中查找最长天数出现的位置: MATCH(F6-1, IFERROR(SMALL(IF(C6:C245C5:C244,B5:B244),B5:B244)-SMALL(IF...(C4:C244C5:C245,B5:B245),B5:B245),0),0) 然后在数组: IF(C4:C243C5:C244,B5:B244) 中查找最小值,即为最长天数开始的位置 完整的公式为...Bug:本示例假设连续打卡的天数总是大于连续中断的天数,否则上述结果不正确。 下面是更酷的公式。

    1.8K20

    SQL 每个用户最长连续活跃天数:连续问题经典解法(腾讯面试题)

    一、题目背景 这道题来自腾讯微信/QQ的用户活跃度分析岗面试。最长连续活跃天数是衡量用户"上瘾程度"的核心指标——累计活跃天数可以被一次促销活动撑起来,但连续活跃天数反映的是用户是否养成了使用习惯。...业务场景:微信的"连续登录打卡"功能和QQ的"活跃天数勋章"体系背后就是连续活跃天数的计算。产品团队用这个指标找到"可能流失"的用户——昨天还在活跃、今天突然中断了的用户,需要Push拉回。...,统计每组的天数,即为一个连续活跃段的天数 取每个用户的最大连续天数 维度 评分 题目难度 ⭐️⭐️⭐️⭐️ 题目清晰度 ⭐️⭐️⭐️⭐️⭐️ 业务常见度 ⭐️⭐️⭐️⭐️⭐️ 四、逐步推导 1....坑2:连续天数相等时取MAX的意义 u01 有两段连续:3天(03-01~03-03)和4天(03-05~03-08),MAX() 取4天。...六、举一反三 当前连续天数:取 group_date 最大的一段(最近一段连续),而非所有段的最大值 连续N天以上筛选:HAVING 中加条件,找"连续7天活跃"的发勋章资格用户 最长连续不活跃天数:反过来计算

    30710

    字节跳动大数据面试SQL-最大连续登录天数

    业务场景:用户运营需要找出"高活跃用户"(连续登录天数最长的用户),给他们推送 VIP 权益。同时也要找出"即将流失的用户"(连续登录天数突然下降)。...二、题目 现有一张用户登录日志表 t17_zj_user_login,记录了用户每天的登录情况(每天每用户至多一条记录)。请找出每个用户的最大连续登录天数。...按差值分组,COUNT 求每组连续天数,MAX 取最大值 原理图解: 用户1 的日期: 01-01 → ROW_NUMBER=1 → 差值=01-01 - 1 = 12-31 01-02 → ROW_NUMBER...),再套用差值法 当前连续天数:不只是历史最大,还要知道"截止今天正在连续的最近一段有多少天" 七、知识点总结 考点 说明 ROW_NUMBER + PARTITION BY 按用户分区编号 日期 -...ROW_NUMBER Gaps and Islands 差值法核心 相同差值 = 连续 连续日期的数学特性 DATE_SUB 日期减去整数天数 MAX + GROUP BY 取得每个用户的最长连续段

    35210

    如何查找递增连续数组中缺失的数字

    在一个长度为n的递增数组中,数组中元素范围是0 ~ n-1,如何在这个递增连续数组中查找缺失的数字? 分析下: 1. 排序数组中的搜索算法,首先想到的就是二分法查找 2....丢失的数字之前的左子数组:nums[m] = m, 需要找到第一个nums[m] > m的数组索引值即可....移动边界指针 Nums[3] = 3,左指针右移,同时,已经知道了m指针位置,指针值与元素值是相同的,查找值一定是在[m+1,r]区间中,所以左指针移动到m+1位置....在处理边界值的时候,在(i == r)的时候,还多需要多遍历一次,向右移动左指针一次. 4. 这时,左指针值便是最后想要的值. 所以我们的遍历条件为(l的结果值....综上,对于有序数组的查找,一般都会使用二分法查找.在查找数据的时候,注意左右边界指针的移动.以及遍历标记(l<=j)即可.

    5.7K21

    SQL 游戏道具连续购买天数:ROW_NUMBER差值法分组求连续(腾讯面试题)

    业务场景:游戏运营通过"连续购买天数"来设计订阅制道具——连续7天每天购买体力药水的玩家,可以推送"周卡"(一次买7天更便宜)。这道题的SQL就是识别这类消费习惯的基础查询。...请计算每个用户购买每种道具的最长连续购买天数,并输出该连续段的开始日期和结束日期。...; 按 (user_id, item_id, 基准日期) 分组,统计每段连续天数、开始日期、结束日期; 按 (user_id, item_id) 取最大连续天数; 维度 评分 题目难度 ⭐️⭐️⭐️⭐️...如果只写 PARTITION BY user_id,会把不同道具的购买日期混在一起,导致"跨道具的连续天数"被错误合并。...六、举一反三 连续购买金额递增:LAG获取上一次购买金额,加上 AND amount > LAG(amount) 条件,升级为"连续且递增购买" 购买周期分析:计算相邻两次购买的平均间隔天数,预测用户下次购买时间

    23610

    HiveSQL-面试题027 当天活跃用户当前连续活跃天数

    一、题目 有用户登录日志表,包含日期、用户ID,当天是否登录,请查询出当天活跃的用户当前连续活跃天数; +-------------+----------+-----------+ | login_date...| | 2023-08-03 | 4 | 1 | +-------------+----------+-----------+ 二、分析 一眼看上去,连续登录问题...,然后balabla……(如果这样,就走弯路了,首先该题目中的原始数据经过清洗,其次需求只需要当前登录用户的最近联系登录的数据,而不是求历史所有的最大连续登录,千万别思维定式); 1.找到所有用户最后未登录日期...; 2.筛选出最后未登录日期的数据,(如果不存在未登录数据,则代表该用户一直连续登录) 3.对筛选结果进行分组统计; 维度 评分 题目难度 ⭐️⭐️⭐️ 题目清晰度 ⭐️⭐️⭐️⭐️⭐️ 业务常见度 ⭐️...用户3最后一天是未登录状态,所以结果记录中不存在用户3的登录记录。

    67410

    Oracle,查找所有至少连续出现N次的数字

    OracleLeetCode Oracle,查找所有至少连续出现N次的数字 起因 leetcode180 刷到Leetcode第180题.连续出现的数字 一开始看到题目的时候就觉得有见过类似场景,一下子想不起来...,觉得跟我平常工作中的取开仓日很像,思索一会无思路,去看题解,发现大家用的是多表关联和lead聚合函数,无法复用决定研究。...t.num, ROW_NUMBER() over(partition by t.num order by t.id) as r_sort from Logs t 如果num连续时...r_sort是递增的,id也是递增的 这时候相减就会得出一个相同的值 select t.id, t.num, ROW_NUMBER() over(partition by...by t.num order by t.id) as d_sort from Logs t) t group by t.num,d_sort having count(d_sort)>=3; 当统计连续的

    2.5K10

    制作 m 束花所需的最少天数(二分查找)

    制作花束时,需要使用花园中 相邻的 k 朵花 。 花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。 请你返回从花园中摘 m 束花需要等待的最少的天数。...花园在 7 天后和 12 天后的情况如下: 7 天后:[x, x, x, x, _, x, x] 可以用前 3 朵盛开的花制作第一束花。但不能使用后 3 朵盛开的花,因为它们不相邻。...小张刷题计划(二分查找) LeetCode 875. 爱吃香蕉的珂珂(二分查找) LeetCode 1011....在 D 天内送达包裹的能力(二分查找) 每个位置的花,只能采一次,一束花要k朵连续的花 二分查找开花的天数 mid,在 mid 天下,看能不能满足要求 class Solution { //C++ public...0, flowercount = 0; for(auto d : day) { if(days/d >= 1)//能开花 flowercount++;//连续开花的数量

    90720

    MRP的库存供应天数(StckDS)和收货供应天数(RDS)

    我们在MD07里面,可以看到三个天数: 1、库存可供应天数(StckDS) 2、第一次日供应量收货(RDS 1) 3、第二接货日期的收货(RDS 2) 而且信号灯的显示就是按照这三个天数来进行设置的...那么这三个天数到底是如何计算的呢? 首先我们看本文举的一个例子: 这里三个日期分别显示4.5天、6.3天、6.3天。...有一个计算公式: 库存可供应天数=(可用性数量为负的最早日期 - 当前日期 - 1)+ 不为负的最近可用性数量/需求数量。 注意:①这里可用性数量只算库存。...第一次日供应量收货天数=(可用性数量为负的最早日期 - 当前日期 - 1)+ 不为负的最近可用性数量/需求数量。 注意:①这里可用性数量包含库存加收货。...收货包含的单据类型,配置如下: 对应第一收货供应天数和第二收货供应天数,其区别如下配置: 如有不对之处,请斧正。

    2.4K10
    领券