题解 | #试卷发布当天作答人数和平均分#
试卷发布当天作答人数和平均分
https://www.nowcoder.com/practice/5b58e89556dc4153a79d8cf8c08ba499
(1)条件:
1.试卷类别SQL: tag='sql'
2.试卷发布当天作答: date_format(submit_time,'%Y%m%d')=date_format(release_time,'%Y%m%d')
(人有点傻,date()直接返回日期就好。。。)
3.五级以上用户: ui.level>5
(2)查找值:
试卷ID:exam_id
作答人数: count(distinct uid)
平均分: round(avg(score),1)
这三个都可直接从同一张表exam_record 中查询到
(3)分组:按照题意一开始想的是按照试卷发布日期分组,最后感觉直接按照试卷id分组也是可以的
group by exam_id
(4)排序:
先按人数降序,再按平均分降序:order by uv desc ,avg_score
完整题解:
select exam_id,count(distinct uid) uv,round(avg(score),1) avg_score from exam_record er
where (exam_id,uid) in (
select ei.exam_id,ui.uid from examination_info ei,exam_record er,user_info ui
where tag='sql' and date_format(submit_time,'%Y%m%d')=date_format(release_time,'%Y%m%d') and ui.level>5
)
group by exam_id
order by uv desc ,avg_score;

