select exam_id, count(distinct uid) as uv, round(avg(score), 1) as avg_score from ( select er.uid, er.exam_id, er.score from exam_record as er join user_info as ui on er.uid = ui.uid join examination_info as ei on ei.exam_id = er.exam_id where tag = 'SQL' and ui.level > 5 and date(submit_time) = date(release_time) and score is not null ) as a group by exam_id order by count(uid) desc, avg(score)
1.先用uid作为桥梁连接exam_recored和user_info, 再用exam_id作为桥梁连接examination_info
2.筛选条件包括tag为SQL,等级大于5,分数非空,和当天(即交卷时间和发布时间为同一天)
3.连接并筛选好的表中抽取uid, exam_id, score三列
4.按exam_id分组,统计不重复的uid数量作为答这种试卷的人数,计算写该试卷的人的平均分并保留一位小数作为该试卷的平均分