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'
             )