题解 | #试卷发布当天作答人数和平均分#
试卷发布当天作答人数和平均分
https://www.nowcoder.com/practice/5b58e89556dc4153a79d8cf8c08ba499
#用户信息表user_info
#uid用户ID,nick_name昵称, achievement成就值, level等级, job职业方向, register_time注册时间)
#试卷信息表examination_info(
# exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间)
# 试卷作答记录表exam_record
# (uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分)
-- 每张SQL类别试卷发布后,当天5级以上的用户作答的人数uv和平均分avg_score
-- 人数降序,平均分升序
select a.exam_id,count(distinct a.uid) as uv,
round(avg(score),1) as avg_score
from exam_record a
join examination_info b
on a.exam_id = b.exam_id
join user_info c
on a.uid = c.uid
where b.tag = 'SQL'
and date(a.start_time) = date(b.release_time) -- 试卷发布当天
and c.level > 5
and a.score is not null
group by a.exam_id
order by uv desc,avg_score
#uid用户ID,nick_name昵称, achievement成就值, level等级, job职业方向, register_time注册时间)
#试卷信息表examination_info(
# exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间)
# 试卷作答记录表exam_record
# (uid用户ID, exam_id试卷ID, start_time开始作答时间, submit_time交卷时间, score得分)
-- 每张SQL类别试卷发布后,当天5级以上的用户作答的人数uv和平均分avg_score
-- 人数降序,平均分升序
select a.exam_id,count(distinct a.uid) as uv,
round(avg(score),1) as avg_score
from exam_record a
join examination_info b
on a.exam_id = b.exam_id
join user_info c
on a.uid = c.uid
where b.tag = 'SQL'
and date(a.start_time) = date(b.release_time) -- 试卷发布当天
and c.level > 5
and a.score is not null
group by a.exam_id
order by uv desc,avg_score