#每天一点点,记录工作中实操作可行#
#oracle中以每10个步长作为一个分组#
当分组范围较大,有固定范围值时,可以用这个方法进行分组
当sum_rooms<30 时,归类为30以下;
当 sum_rooms >=200时,归类为200以上;
当sum_rooms在30到200之间时,将这些数据每10个作为一个分组
select Z2.ID,Z1.name
,case when sum_rooms <30 then '30以下'
when sum_rooms >=200 then '200以上'
else floor(sum_rooms/10)*10 || '-' || (floor(sum_rooms/10)+1)*10 end srn_type -- 每10步长分为一组
from z2
left join z1 on z2.id = z1.id
group by Z2.ID,Z1.name
,case when sum_rooms <30 then '30以下'
when sum_rooms >=200 then '200以上'
else floor(sum_rooms/10)*10 || '-' || (floor(sum_rooms/10)+1)*10 end
mysql 中这样写
,case when sum_rooms <30 then '30以下'
when sum_rooms >=200 then '200以上'
else concat(floor(sum_rooms/10)*10 ,'~',(floor(sum_rooms/10)+1)*10 ) end

本文介绍了一种在Oracle及MySQL数据库中使用CASE语句结合FLOOR函数进行数据分组的技巧,尤其适用于数据范围较大且有固定间隔的情况。通过具体SQL语句示例,展示了如何将数据按每10个单位进行分组,并归类于特定区间。

2460

被折叠的 条评论
为什么被折叠?



