题解 | #连续签到领金币#
连续签到领金币
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
查看8道真题和解析
