SQL连续登录领金币
表:user_login_detail
字段:user_id login_ts
连续签到领金币
每天签到领1金币,连续签到3、7天,分别额外多领2和6个金币
连续签到7天重新累计
需求:求每个用户领取的金币数
1 select user_id,sum(ct) + sum(coin) total_ct from ( 2 select 3 user_id 4 ,ct 5 ,int(ct / 7) *8 + if((ct % 7) >=3,2,0) coin -- 额外领取的金币 6 7 from ( 8 9 select user_id,diff_date,count(*) ct 10 from ( 11 12 select user_id,login_date,datediff(login_date,rn) diff_date 13 14 from ( 15 select 16 user_id,login_date,row_number() over(partition by user_id order by login_date) rn 17 from ( 18 select distinct user_id,date_format(login_ts,'yyyy-mm-dd') login_date from user_login_detail 19 ) a 20 ) b 21 ) c group by user_id,diff_date 22 ) d 23 ) e group by user_id
浙公网安备 33010602011771号