with cte as( 
select device_id,count(*) as cnt
from question_practice_detail a left join question_detail b using(question_id)
where difficult_level ='hard'
group by device_id  )
select device_id,ifnull(cnt,0) as question_cnt
from user_profile a left join cte b using(device_id)
order by question_cnt,device_id desc;