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

连续签到领金币

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

WITH t as(
SELECT *
FROM tb_user_log
WHERE DATE(in_time) BETWEEN '2021-07-07' AND '2021-10-31'
AND artical_id = 0 AND sign_in = 1
),
t1 as(
SELECT DISTINCT uid,date(in_time) AS dt,
ROW_NUMBER()OVER(PARTITION BY uid ORDER BY date(in_time)) AS ranking
FROM t
),
t2 as(
SELECT uid,dt,ranking,
(dt - ranking) AS continue_dt
FROM t1
),
t3 as(
SELECT uid,dt,ranking,continue_dt,
ROW_NUMBER()OVER(PARTITION BY uid,continue_dt ORDER BY dt) AS continue_ranking
FROM t2
),
t4 as(
SELECT *,
(CASE WHEN continue_ranking % 7 = 3 THEN 3
WHEN continue_ranking % 7 = 0 THEN 7
ELSE 1
END) AS coin
FROM t3
)
SELECT uid,DATE_FORMAT(dt,'%Y%m') AS month,
SUM(coin) AS coin
FROM t4
GROUP BY uid,month
ORDER BY month,uid;

全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
07-09 12:12
门头沟学院 Java
5月底投简历7月初开奖收获秋招第一个offer,虽然白菜价,但至少能保底了
土木转行ing:土木博士想转图像,最后拿了 tp 提前批 sp 最低档,感觉性价比不高
TP-LINK开奖132人在聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务