题解 | #未完成率较高的50%用户近三个月答卷情况#
未完成率较高的50%用户近三个月答卷情况
https://www.nowcoder.com/practice/3e598a2dcd854db8b1a3c48e5904fe1c
with temp as (select er.*
, dense_rank() over (partition by ui.uid order by month(start_time) desc ) r
from exam_record er
inner join user_info ui on er.uid = ui.uid
where ui.uid in (SELECT A.uid
FROM (SELECT uid,
PERCENT_RANK() over ( ORDER BY count(submit_time) / count(start_time) ) rate_rk -- 对完成率进行分数排序
FROM exam_record
WHERE exam_id IN
(SELECT exam_id FROM examination_info WHERE tag = 'SQL') -- SQL试卷
GROUP BY uid) A
WHERE rate_rk <= 0.5 -- 查找排名低于50%的用户
AND uid IN (SELECT uid FROM user_info WHERE level IN (6, 7))))
select uid
, date_format(start_time, '%Y%m') start_month
, count(start_time) total_cnt
, count(score) complete_cnt
from temp
where r <= 3
group by uid, start_month
order by uid, start_month;

