SQL16 得分不小于平均分的最低分
题目主要信息:
- 从试卷作答记录表中找到类别为的SQL试卷得分不小于该类试卷平均得分的用户最低得分
- 其中试卷信息记录在表examination_info(包括试卷ID、类别、难度、时长、发布时间),答题信息记录在表exam_record(包括试卷ID、用户ID、开始时间、结束时间、得分)
问题拆分:
- 要找类别为SQL的试卷平均得分:
- 得分信息在exam_record,试卷类别在表examination_info中,因此要将两个表以exam_id连接。知识点:join...on...
- 从连接后的表中找到类别为SQL的试卷的分数。知识点:select...from...where...
- 计算得分的平均值。知识点:avg()
- 找到类别SQL的试卷得分大于平均得分的最小值:
- 得分信息在exam_record,试卷类别在表examination_info中,因此要将两个表以exam_id连接。知识点:join...on...
- 从连接后的表中找到类别为SQL的试卷且分数大于刚刚找到的平均分的分数。知识点:select...from...where...and...
- 从中选出最小值。知识点:min()
代码:
select min(e_r.score) as min_score_over_avg
from exam_record e_r join examination_info e_i
on e_r.exam_id = e_i.exam_id
where e_i.tag = 'SQL'
and score >= (select avg(e1.score)
from exam_record e1 join examination_info e2
on e1.exam_id = e2.exam_id
where tag = 'SQL'
)