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

连续签到领金币

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

select
uid, date_format(dt, '%Y%m') month, sum(coin) coin
from(
    select
    uid, dt, tep,
    case when row_rank%7 = 3 then 3 when row_rank%7 = 0 then 7 else 1 end as coin
    from( 
        select
        uid, dt, tep, row_number() over(partition by uid, tep order by dt) row_rank
        from(
            select
            uid, dt, date_sub(dt,interval rn day) tep
            from(
                select 
                uid, date(in_time) dt, row_number() over(partition by uid order by date(in_time)) rn
                from tb_user_log
                where artical_id = 0 and sign_in = 1 and date(in_time) between '2021-07-07' and '2021-10-31'
                group by uid, date(in_time)
            ) t
        )k
    ) l
) n
group by date_format(dt, '%Y%m'), uid
order by month, uid


全部评论

相关推荐

03-28 19:11
铜陵学院 C++
有礼貌的山羊追赶太阳:太典了,连笔试都没有开始就因为HC满了而结束了,而且还卡你不让你再投其他部门的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务