题解 | #筛选限定昵称成就值活跃日期的用户#
筛选限定昵称成就值活跃日期的用户
https://www.nowcoder.com/practice/2ed07ff8f67a474d90523b88402e401b
1. 首先筛选出 试卷区和题目区最近一次的活跃月份处于2021年9月的活跃用户。然后从user_Info 表中筛选用户。
# 筛选限定昵称成就值活跃日期的用户
select UI.uid,
UI.nick_name,
UI.achievement
from user_info UI
where UI.nick_name like '牛客%号'
and UI.achievement between 1200 and 2500
and UI.uid in (
select A.uid
from (
select ER.uid,
ER.start_time exam_time,
PR.submit_time prac_time,
row_number() over(partition by ER.uid order by ER.start_time desc) rk1,
row_number() over(partition by PR.uid order by PR.submit_time desc) rk2
from exam_record ER left join practice_record PR using(uid)
union
select PR.uid,
ER.start_time exam_time,
PR.submit_time prac_time,
row_number() over(partition by ER.uid order by ER.start_time desc) rk1,
row_number() over(partition by PR.uid order by PR.submit_time desc) rk2
from exam_record ER right join practice_record PR using(uid)
) A where (rk1=1 and date_format(A.exam_time,'%Y%m')='202109') or
(rk2=1 and date_format(A.prac_time,'%Y%m')='202109')
)