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;