首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用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的连续登录天数的最大值即可

    2.9K30

    PowerBI 连续天数通用计算模型

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

    7000

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

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

    6500

    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获取了每周连续出现天数

    1.9K20

    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(三)—— 求所有用户和活跃用户的总数及平均年龄

    3K40

    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.2K20

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

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

    7.7K11

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

    在一个长度为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)即可.

    3.2K21

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

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

    21010

    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; 当统计连续的

    1.7K10

    制作 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++;//连续开花的数量

    56020

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

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

    1.6K10

    Sqlite Queue(Python) – 简单的SQLite队列

    文章目录[隐藏] 简介 示例 项目地址 老物搬运23333 简介 基于python实现的sqlite队列,方便的处理sqlite并发。并且包含一个十分简洁好用的SQL语句包装。...而且大部分代码都是在手机的QPython上完成的,于是质量可想而知(不过我尽量都改掉了QAQ)。 示例 一个简单的队列可以在两行代码实现。...import sqlite_queue queue = sqlite_queue.SqliteQueue('test.db') queue.start() 以下是一个完整的示例: import sqlite_queue...其实回调也是很棒的,比如INSERT语句就可以返回当且操作的行数。具体的文档看这里:WIKI-回调函数。...对了,peewee也是支持哒~ 项目地址 https://gitee.com/kaaass/sqlite_queue_python 欢迎各位前往Star、Fork!

    1.6K10
    领券