关于腾讯两道sql问题的解法

本文分享了腾讯面试中遇到的两道SQL题目,涉及签到数据处理。第一题通过SQL计算用户连续签到天数,第二题在此基础上找出每个用户的最长连续签到天数。解题思路包含对数据排序、变量初始化及DATEDIFF函数的运用。
摘要由CSDN通过智能技术生成

题目详见:https://zhuanlan.zhihu.com/p/117498021?utm_source=wechat_session&utm_medium=social&utm_oi=576132412245938176

模拟的实际数据:注意红框中存在时间不连续的情况。

第一题的解法:

 

首先判断@temp_id = user_id (即上一条数据的user_id =当前数据的user_id)是否相同,如果不同,days子弹的值等于attend,即如果签到,就是1,如果不签到就是0 ; 如果相同,在判断attend字段,如果attend = 0,则days重置为0,如果attend = 1,继续判断两个日期间隔是否为1,如果间隔为1,则num自增1,如果间隔不是1天,则num = 1(因为此时attend = 1).

SELECT user_id,date,attend,IF(@temp_id =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值