SELECT
    a.uid,
    IFNULL (a.exam_cnt, 0) exam_cnt,
    IFNULL (b.question_cnt, 0) question_cnt
FROM
    (
        SELECT
            uid,
            count(*) exam_cnt
        FROM
            exam_record er
        WHERE
            er.uid in (
                SELECT
                    uid
                FROM
                    exam_record
                WHERE
                    exam_id IN (
                        SELECT
                            exam_id
                        FROM
                            examination_info
                        WHERE
                            difficulty = 'hard'
                            AND tag = 'SQL'
                    )
                    AND uid IN (
                        SELECT DISTINCT
                            uid
                        FROM
                            user_info
                        WHERE
                            level = '7'
                    )
                GROUP BY
                    uid
                HAVING
                    AVG(score) > 80
            )
            AND YEAR (er.submit_time) = '2021'
        GROUP BY
            uid
    ) a
    LEFT JOIN (
        SELECT
            uid,
            count(*) question_cnt
        FROM
            practice_record pr
        WHERE
            pr.uid in (
                SELECT
                    uid
                FROM
                    exam_record
                WHERE
                    exam_id IN (
                        SELECT
                            exam_id
                        FROM
                            examination_info
                        WHERE
                            difficulty = 'hard'
                            AND tag = 'SQL'
                    )
                    AND uid IN (
                        SELECT DISTINCT
                            uid
                        FROM
                            user_info
                        WHERE
                            level = '7'
                    )
                GROUP BY
                    uid
                HAVING
                    AVG(score) > 80
            )
            AND YEAR (pr.submit_time) = '2021'
        GROUP BY
            uid
    ) b on b.uid = a.uid
ORDER BY
    exam_cnt asc,
    question_cnt desc