with cte as ( select left(event_date,7) as dt_month, case when right(event_date,2)<=9 then '上旬' when right(event_date,2)<=19 then '中旬' else '下旬' end as dt_days ,count(distinct device_id) as cnt from question_practice_detail group by dt_month,dt_days ) select concat(left(dt_month,4),'年',mid(dt_month,6,2),'月',dt_days) as dt_range,cnt from cte order by dt_month desc,cnt desc