题解 | #连续签到领金币#

连续签到领金币

https://www.nowcoder.com/practice/aef5adcef574468c82659e8911bb297f

select uid,date_format(date1,'%Y%m') month,
sum(CASE
    WHEN sign_in = 1 AND datediff(date1,date3)%7=3 THEN 3
    WHEN sign_in = 1 AND datediff(date1,date3)%7=0 THEN 7
    WHEN sign_in = 0 THEN 0
    ELSE 1
    END) AS coin
from(
SELECT uid,date1,date_sub(min(date1) over(partition by uid,date2),interval 1 day) date3,
       sign_in
FROM (
         SELECT uid, date1, DATE_SUB(date1, INTERVAL row_number() OVER (PARTITION BY uid ORDER BY date1) DAY) AS date2, sign_in
         FROM (
                  SELECT DISTINCT uid, DATE(in_time) AS date1, sign_in
                  FROM tb_user_log
                  WHERE artical_id = 0 AND in_time between '2021-07-07 00:00:00' and '2021-10-31 23:59:59'
              ) t
     ) tt
) ttt
group by uid,month

太久不写sql,一些函数的用法都忘了

datediff(end_date,start_date),别把参数位置记反了

细节问题:

3%7=3,-3%7=-3,7%7=0,-7%7=0

date_sub(min(date1) over(partition by uid,date2),interval 1 day) 计算连续签到的第一天的上一天,这样做datediff得到的值就是第几天

全部评论

相关推荐

头像 会员标识
昨天 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
ProMonkey2024:5个oc?厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了(别的帖子偷来的,现学现卖😋)
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务