# 查询高难度SQL试卷得分平均值大于80并且是7级的用户名id
select er.uid
from exam_record er
join examination_info ei
on er.exam_id=ei.exam_id
join user_info ur
on er.uid=ur.uid
where level = 7     # 条件筛选7级用户的高难度sql试卷作答记录
and tag = 'SQL'
and difficulty = 'hard'
group by er.uid        # 按用户id分组查询各人的SQL高难度试卷平均分,并过滤
having avg(score)>80    # 聚合函数自动忽略空值,故不用考虑未提交情况
# 统计以上id号用户的2021年试卷总完成次数和题目总练习次数并保留2021年试卷完成次数大于0的用户,按要求排序
select k1.uid, exam_cnt, if(question_cnt is null, 0, question_cnt)
from (
    select uid, count(*) exam_cnt
    from exam_record
    where year(submit_time) = '2021'
    group by uid
) k1
left join (
    select uid, count(*) question_cnt
    from practice_record
    where year(submit_time) = '2021'
    group by uid
) k2
on k1.uid=k2.uid
where k1.uid in (
    select er.uid
    from exam_record er
    join examination_info ei
    on er.exam_id=ei.exam_id
    join user_info ur
    on er.uid=ur.uid
    where level = 7     
    and tag = 'SQL'
    and difficulty = 'hard'
    group by er.uid        
    having avg(score)>80  
)
and exam_cnt>0
order by exam_cnt, question_cnt desc;