with t1 as (
    select exam_id as tid, count(distinct uid) as uv, count(uid) as pv
    from exam_record
    group by tid
    order by uv desc, pv desc
)
select tid, uv, pv
from t1
union all
select *
from (
    (select question_id as tid, count(distinct uid) as uv, count(uid) as pv
    from practice_record
    group by tid
    order by uv desc, pv desc)
) as c;