题解 | 连续签到领金币

连续签到领金币

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

with
    t1 as (
        select distinct
            uid,
            date (in_time) as dt,
            dense_rank() over (
                partition by
                    uid
                order by
                    date (in_time)
            ) as dt1
        from
            tb_user_log
        where
            sign_in = 1
            and date (in_time) >= 20210707
            and date (in_time) < 20211101
            and artical_id=0
    )
select
    uid,
    date_format (dt, '%Y%m') as month,
    sum(
        CASE
            WHEN MOD(ddt, 7) = 3 THEN 3 -- 使用标准MOD函数替代%
            WHEN MOD(ddt, 7) = 0 THEN 7 -- 避免%符号导致的解析错误
            ELSE 1 -- 必须指定ELSE默认值
        END
    ) AS coin
from
    (
        select
            uid,
            dt,
            row_number() over (
                partition by
                    uid,
                    date_sub(dt, interval dt1 day)
            ) as ddt
        from
            t1
    ) tt
group by
    uid,
    month
    order by month ,uid

全部评论

相关推荐

03-11 16:05
运城学院 Java
程序员小白条:简历内容太多了,而且一段实习都没的情况下,写这么多,没啥说服力,反而让人觉得假
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
点赞 评论 收藏
分享
在笔试的大西瓜很矫健:校招数分不用想了,这经历和学历都不够用,大厂更别想,初筛都过不了,说点不好听的小厂数分都进不去(小厂也是假数分),要两个对口实习+3个项目(或者3+2),而且要有含金量才能补一点你的学历劣势。 建议刷实习,社招找数分,校招看运气,能入行业就行,可以运营转数分
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务