select uid,date_format(date1,'%Y%m') month, sum(CASE WHEN sign_in = 1 AND datediff(date1,date3)%7=3 THEN 3 WHEN sign_in = 1 AND datediff(date1,date3)%7=0 THEN 7 WHEN sign_in = 0 THEN 0 ELSE 1 END) AS coin from( SELECT uid,date1,date_sub(min(date1) over(partition by uid,date2),interval 1 day) date3, ...