with temp as ( select '5-6级' as level_cut, count(*) as num from answer_tb a left join author_tb u on a.author_id = u.author_id where char_len >= 100 and author_level in (5,6) union select '3-4级' as level_cut, count(*) as num from answer_tb a left join author_tb u on a.author_id = u.author_id where char_len >= 100 and author_level in (3,4) union select '1-2级' as level_cut, count(*) as num from answer_tb a left join author_tb u on a.author_id = u.author_id where char_len >= 100 and author_level in (1,2) ) select * from temp where num != 0 order by num desc,level_cut asc