有这样表数据:

我想把它转换成这样的,order_num in (1,2) 的数据作为单独一列, order_num in (3,4) 的数据作为单独一列,
order_num in (5,6) 的数据作为单独一列,order_num>6 的数据作为单独一列。如下图:

这个功能实现可以使用聚合函数,如sum 在sum里面通过case when 来实现
select
sum(case when (order_num=1 or order_num=2) THEN order_num else 0 END) as '1-2单'
,sum(case when (order_num=3 or order_num=4) THEN order_num else 0 END) as '3-4单'
,sum(case when (order_num=5 or order_num=6) THEN order_num else 0 END) as '5-6单'
,sum(case when (order_num>6) THEN order_num else 0 END) as '6单以上'
,total_num
,order_time
from tmp_rato group by order_time
case when的用法中,when 是作为条件(一个简单或复杂的表达式)then 后面是判断的结果,也可以是表达式(一定使用括号括起来),但then后如果使用sum统计的话,结果有问题,原因没有找到。
如果是count聚合的话,因为when的提交是一个布尔值,count 统计结果当时满足条件的布尔值,此时就不要在使用else 等于0了,这样的话,count是统计的总数