-- with内容是 保证同一个用户在同一天多次登录只留下签到那一次的记录
with log_info as(
    select 
        uid,
        date(in_time) log_date,
        sign_in,
        artical_id
    from 
    (
        select
            *,
            row_number() over(partition by uid,date(in_time) order by sign_in desc) rn
        from
            tb_user_log
        where date(in_time) >= '2021-07-07' and date(in_time)<'2021-11-1' and artical_id = 0
    ) t
    where rn = 1 
)
select 
    uid,
    extract(year_month from log_date) month,
    sum(coin_per_day) coin
from 
    (
        select 
        *,
        case
            when rn%7=3 then 3
            when rn%7=0 then 7 
            else 1
        end coin_per_day
    from 
        (
            select 
                uid,
                prim_day,
                log_date,
                row_number() over(partition by uid,prim_day order by log_date) rn
            from
            (
                select
                    uid,
                    date_sub(log_date,interval (rank() over(partition by uid order by log_date)) day)   prim_day,
                    log_date
                from log_info
                where sign_in = 1 
            ) t1
        ) t2
    ) t3
group by uid,month
order by month,uid