如何在SQL中按0.25增量实现自定义舍入?
SQL实现0.25增量的自定义舍入逻辑
你需要的自定义0.25增量舍入完全可以实现,无需复杂的条件判断,通过简单的数学缩放结合ROUND()函数就能完成,核心逻辑如下:
核心公式
ROUND(your_value * 4, 0) / 4
原理说明
把目标数值乘以4后,原有的0.25增量规则会转化为对整数的标准四舍五入:
- 原小数部分的分界点(0.125、0.375、0.625、0.875)乘以4后刚好是0.5、1.5、2.5、3.5,这正是
ROUND()函数四舍五入到整数的临界值 - 对缩放后的数值执行整数四舍五入,再除以4还原,就得到符合要求的X.00/X.25/X.50/X.75格式结果
数据库示例
MySQL/SQL Server
SELECT ROUND(4.416 * 4, 0) / 4 AS rounded_value; -- 输出4.5 SELECT ROUND(2.75 * 4, 0) / 4 AS rounded_value; -- 输出2.75 SELECT ROUND(5.834 * 4, 0) / 4 AS rounded_value; -- 输出5.75 SELECT ROUND(7.083 * 4, 0) / 4 AS rounded_value; -- 输出7.0
PostgreSQL
PostgreSQL的ROUND()函数默认支持整数舍入,写法一致:
SELECT ROUND(4.416 * 4) / 4 AS rounded_value;
规则匹配验证
针对你给出的规则逐一验证:
- 小数部分0.00-0.25:0.125*4=0.5,≥0.125时ROUND后向上到1,1/4=0.25;<0.125时ROUND后为0,0/4=0.00
- 小数部分0.25-0.50:0.375*4=1.5,≥0.375时ROUND到2,2/4=0.50;<0.375时ROUND到1,1/4=0.25
- 小数部分0.50-0.75:0.625*4=2.5,≥0.625时ROUND到3,3/4=0.75;<0.625时ROUND到2,2/4=0.50
- 小数部分0.75-0.99:0.875*4=3.5,≥0.875时ROUND到4,4/4=1.00;<0.875时ROUND到3,3/4=0.75
内容的提问来源于stack exchange,提问作者Dr.Prog
相关产品推荐
相关产品推荐

