SELECT uid, COUNT(DISTINCT r.id) as exam_cnt, COUNT(DISTINCT p.id) as question_cnt FROM exam_record r LEFT JOIN practice_record p USING(uid) LEFT JOIN examination_info USING(exam_id) LEFT JOIN user_info USING(uid) WHERE uid in ( SELECT uid FROM exam_record r LEFT JOIN practice_record p USING(uid) LEFT JOIN examination_info USING(exam_id) LEFT JOIN user_info USING(uid) WHERE tag = 'SQL' and difficulty = 'hard' and level = 7 GROUP BY uid HAVING avg(r.score) > 80 ) and left(r.submit_time,4) = '2021' and (left(p.submit_time,4) = '2021' or p.submit_time is null) GROUP BY uid ORDER BY exam_cnt, question_cnt DESC