#思路: #①先用几次子查询把高难度SQL考试均分大于80的7级大佬选出来; #②把各uid在21年完成考试次数求出; #③把各uid在21年完成练题次数求出; #④将②、③两表连接,加入筛选条件是uid在①选出的人员内即可。 select tb2.uid, a, if(b is null,0,b) question_cnt from (select uid, count(score) a from exam_record where year(submit_time)=2021 group by uid) as tb2 left join (select uid, count(score) b from practice_record where year(submit_time)=2021 group by uid ) as tb3 using(uid) #下面的子查询是选出高难度SQL均分大于80的7级大佬 where uid in( select uid from exam_record right join (select exam_id from examination_info where tag='SQL' and difficulty='hard') tb1 using(exam_id) where uid in ( select uid from user_info where level=7 ) group by uid having avg(score)>80 ) order by a, question_cnt desc