select 
    tid,
    uv,
    pv
from
    (select
        1 as exam,
        t1.exam_id as tid,
        count(distinct t1.uid) as uv,
        count(t1.exam_id) as pv
    from
        exam_record t1
    group by
        t1.exam_id
    union all
    select
        2 as exam,
        t2.question_id as tid,
        count(distinct t2.uid) as uv,
        count(t2.question_id) as pv
    from
        practice_record t2
    group by
        t2.question_id) t
order by
    t.exam asc,t.uv desc,t.pv desc