此题,考点就是聚合函数+判断函数,之前2道题都是直接出了要判断的列,这题是要由你自己求出来. 1.先求出,每位用户的单量 2.在求出每个用户的单量属于哪个范围的 3.在求哪个范围内的用户个数 方法一:虚拟表+聚合函数+判断求出(if) with tiaojian as ( select 客户ID, count(distinct 运单号) as 订单数 from 快递揽收表 where date_format(创建日期,"%Y%m")=202005 group by 客户ID ) select t.单量, count(客户ID) as 客户数 from( select 客户ID, if(订单数 between 0 and 5 ,"0-5",if(订单数 between 6 and 10,"6-10",if(订单数 between 11 and 20,"11-20","20以上"))) as 单量 from tiaojian ) as t group by t.单量 order by t.单量 方法二:虚拟表+聚合函数+判断求出(case when then end) with tiaojian as ( select 客户ID, count(distinct 运单号) as 订单数 from 快递揽收表 where date_format(创建日期,"%Y%m")=202005 group by 客户ID ) select t.单量, count( 客户ID) as "客户数" from( select 客户ID, case when 订单数 between 0 and 5 then "0-5" when 订单数 between 6 and 10 then "6-10" when 订单数 between 11 and 20 then "11-20" when 订单数>20 then "20以上" end 单量 from tiaojian ) as t group by t.单量 order by t.单量