sql中round(),floor(),ceiling()的实用场景

1、场景1:分页问题,业务需求根据数据中的order字段(int类型)进行分组,需求是order值在[1,20]为第一组,[21,40]第二组,[41,60]第三组。。。以此类推。

本来打算在代码中进行判断处理,但是总共数据有多少并不确定,可能这批数据最大的order为39,下一批就是393939,如果在代码中判断,无疑效率不高而且代码很丑。后来想到了在数据库查询阶段对order数值进行加工形成一个分组标记,项目中使用的是ceiling()函数。下边将边界条件的round(),floor(),ceiling()三个函数值做下简单记录:

例如order = 81,99,100这几个数据都应该位于第5组

sql中round(),floor(),ceiling()的实用场景

注意:1、根据业务需求,选用函数类型,分页问题向上取整。分页经验公式:page_no = (data_num - 1)/page_size + 1就是向上取整的意思。