select a.device_id,
    count(if (c.difficult_level = 'hard', 1, null)) as question_cnt
from
    user_profile a
    left join question_practice_detail b on a.device_id = b.device_id
    left join question_detail c on b.question_id = c.question_id
group by
    device_id
order by
    question_cnt