最近多次看到用SQL查询连续打卡信息问题,自己也实践一波。抛开问题本身,也是对MySQL窗口函数和自定义变量用法的一种练习。
数据应用过程中,数据源的准确性和有效性是数据分析的基础。根据实际业务逻辑定义数据校准指标体系,搭建数据中心的质量监控面板及时发现数据异常,从而实现保证数据质量的目的。
还是昨天的问题,统计每周内问题小区连续出现天数,MySQL可以实现吗?答案是肯定的,就是过程很曲折。 数据库查询语言基本都是针对整列的,不像excel是单元格粒度的,要判断行与行之间的差异比较麻烦。 建表语句如下:
某音某团某节面试时,经常会问到连续登录问题,这个问题看似简单,属于那种“一看就会,一做就懵”的问题,网上分享的一些解题思路,逻辑上比较复杂,今天笔者来分享一种简洁而通用的解题思路,应付此类问题变得游刃有余。
如果这样存数据,对于用户量大的应用,db可能扛不住,比如 1000W 用户,一天一条,那么一个月就是 3 亿数据,非常庞大。
上篇文章 已经对 Redis 基础命令进行了一个大致的学习,接下来我们就需要解决 Issue“增加用户活跃度统计” 啦!
本文将通过构建三张表,几个SQL实例带大家掌握最常见的业务需求,同时这些实例也覆盖了面试中80%的考点。
Sparksql在处理一些具体的业务场景的时候,可以通过算子操作,或者RDD之间的转换来完成负责业务的数据处理,在日常做需求的时候,整理出来一下几个经典的业务场景的解决方案,供大家参考。
这里从数据库中导出的监测设备数据离线预警日志,需求是找出各监测对象设备掉线最长持续多久并确定其离线时长。
今天来解一道题面试中可能经常会被一些面试官拿来“刁难”的题,就是《如何统计连续打卡天数》,当然了这里面的打卡可以换成任意其他行为,比如连续登陆天数,连续学习天数,连续购买天数,这里的天数也是可以换成小时或者别的时间单位的。这个问题的逻辑还是有点复杂,如果要是之前没遇到过这种问题,当场被问到的时候,肯定会一脸懵。
一位B站粉丝,问我后端Java和前端Vue,如何实现一个简单的签到功能,在吃了顿大餐后,顺便也把主要过程分享一下。
资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。
连续问题考察范围可能涉及到:开窗函数,lag函数,row_number(),sum()over(order by) 等各种函数,以及相关数据处理技巧等,无论选取那种方法,连续问题都是相对较为复杂,考察综合能力的一类问题。
在有些时候,我们需要统计连续登录N天或以上用户,这里采用python通过分组排序、分组计数等步骤实现该功能,具体如下:
在电商项目中经常需要对用户购买行为进行分析,比如需要求用户连续购买天数,用户这次购买与上次购买间隔天数。
然后,用登陆日期的“天”和“每个月登陆顺序”的差值来做标记(如下图)。这样就可以知道,当登陆日期连续时,差值就是相同的,代表这些天用户是连续登陆。
签到功能相信大家都很熟悉了,功能就是用户每天可以签到一次,连续签到固定天数可以获得奖励。这里我把功能简单化:
首次签到获得1个积分,第二次签到获得2个积分,第三次签到获得3个积分,以此类推但是签到必须每天连续积分才可以递增,如果有中断再次签到时获得积分仍然从1开始递增; user: id,username,count,point,sign_time
最近在处理数据的时候遇到一个需求,核心就是求取最大连续行为天数。类似需求在去年笔者刚接触pandas的时候也做过《利用Python统计连续登录N天或以上用户》,这里我们可以用同样的方法进行实现。
有一张用户签到表,表中记录了每个用户每天签到的情况。该表包括了三列日期、用户id、用户当日是否签。
在《拼多多面试题:如何找出连续出现N次的内容?》里讲过遇到“连续问题”如何解决,并送出了一个万能模板,模板使用的是窗口函数解决连续问题。
打卡,已经成为我们这个时代的热词。上班打卡,下班打卡,跑步打卡,健身打卡,阅读打卡……,确实,通过打卡能够激励我们坚持做一件事情。然而,有时由于各种原因,我们可能偶尔会中断打卡,那么,我们要知道在打卡记录中,连续打卡(也就是坚持)的最长天数,应该怎么做呢?这就是今天我们想要用公式来解决的问题。
在现代应用程序中,用户签到是一个常见的功能。我们通常使用 MySQL 数据库来存储用户的签到记录。然而,随着用户数量的增加,数据库中的记录将会随时间和用户量线性增长,这不仅增加了存储的负担,而且可能影响查询效率。在追求更高存储效率和查询性能的场景下,MySQL 可能不再是最佳选择。
这个其实是之前那个连续N次数字题的小拓展。用在连续签到天数的开始结束区间和天数,也可以用在连续达标、连续正常考勤、连续超出预警天数等场景。
自然的想法,寻找每个店铺是否连续三天都有销售额。利用现有的表,构造一个中间表,中间表既有当前日期的销售额,又有当前日期后两天的销售额,然后筛选销售额大于0的店铺名称即可。这种思路可以有(至少)两种实现方式。
股市跌宕起伏。7 月初 A 股飙升,股票瞬间成为大家的热门讨论话题,「现在入场还来得及吗?」几乎成为新的问候语。
作者:hdfg159 链接:https://www.jianshu.com/p/bacd924df502
我在《拼多多面试题:如何找出连续出现N次的内容?》里讲过遇到“连续问题”如何解决,并送出了一个万能模板,模板使用的是窗口函数解决连续问题。
#1051 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序。100天过去了,小Ho查看自己的提交记录发现有N天因为贪玩忘记提交了。于是小Ho软磨硬泡、强忍着小Hi鄙视的眼神从小Hi那里要来M张"补提交卡"。每张"补提交卡"都可以补回一天的提交,将原本没有提交程序的一天变成有提交程序的一天。小Ho想知道通过利用这M张补提交卡,可以使自己的"最长连续提交天数"最多变成多少天。 输入
最近有位同学面试了几家,分享了一些觉得有些难度的SQL面试题:比如会让你用SQL实现行转列和列转行操作、用SQL计算留存、用SQL计算中位数、还有如何统计用户最大连续登录天数?
题目背景 统计天数 题目描述 炎热的夏日,KC非常的不爽。他宁可忍受北极的寒冷,也不愿忍受厦门的夏天。最近,他开始研究天气的变化。他希望用研究的结果预测未来的天气。 经历千辛万苦,他收集了连续 天的最高气温数据。 现在,他想知道最高气温一直上升的最长连续天数。 输入输出格式 输入格式: *1行:一个整数N。 *2行:N个空格隔开的整数,表示连续N天的最高气温。 。 输出格式: *1行:一个整数,表示最高气温一直上升的最长连续天数。 输入输出样例 输入样例#1: 10 1 2 3 2 4 5 6 8
前天我发了文章《被问了无数次!6个日期时间常见问题总结 | Power Query实战》,里面有一个关于计算两个日期的间隔天数以及计算年龄(两个日期的间隔年数)的问题,但却没有关于两个日期的间隔月份数的情况。
chage 命令是用来修改帐号和密码的有效期限,系统会根据改信息确定用户何时必须更改其密码。
MySQL自带的日期函数TIMESTAMPDIFF计算两个日期相差的秒数、分钟数、小时数、天数、周数、季度数、月数、年数,当前日期增加或者减少一天、一周等等。
上次我们根据用户创建账号和登录日志进行了《用SQL进行用户留存率计算》,今天我们继续用这份用户登录日志来计算用户连续登录天数。
系统 每天 运行一个任务。每个任务都独立于先前的任务。 任务的状态可以是失败或是成功。
分析中第3点在hive sql系列(三)中计算连续日活中也用到了日期差值,参考链接:
下表显示了type和expr参数怎样被关联:type值 含义 期望的expr格式SECOND秒SECONDS
笔者最近工作中遇见一个性能瓶颈问题,MySQL表,每天大概新增776万条记录,存储周期为7天,超过7天的数据需要在新增记录前老化。连续运行9天以后,删除一天的数据大概需要3个半小时(环境:128G, 32核,4T硬盘),而这是不能接受的。当然如果要整个表删除,毋庸置疑用
在 MySQL 中的日期和时间系列的最后一部分中,我们将通过编写 SELECT 查询来将迄今为止学到的所有知识付诸实践,以获得对数据的与日期相关的细节。
这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:
(下一篇) 16 条 yyds 的代码规范 40 个 SpringBoot 常用注解
> 经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas
在MySQL中,可以通过配置max_binlog_size和expire_logs_days参数来控制二进制日志(binlog)的大小和保留期。但是,要注意的是,max_binlog_size参数设置的是单个binlog文件的最大大小,而不是所有binlog文件的总容量。当binlog文件的大小达到max_binlog_size指定的值时,MySQL会自动创建一个新的binlog文件。
https://github.com/dangnianchuntian/springboot
上图:CSDN每日签到,和每日练习打卡。 在很多互联网应用中,我们会存在签到送积分、签到领取奖励等这样的需求,比如:
DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准) mysql> select DAYOFWEEK('1998-02-03'); -> 3 WEEKDAY(date) 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 mysql> select WEEKDAY('1997-10-04 22:23:00'); -> 5 mysql> select WEEKDAY('1997-11-05'); -> 2 DAYOFMO
领取专属 10元无门槛券
手把手带您无忧上云