SQL技术需求:按指定规则将分钟值取整转换为小数
SQL实现分钟值按规则取整为小数
根据需求,我们需要将1-60范围内的分钟值按以下规则转换为小数:
- 1-15分钟 → 0.0
- 16-45分钟 → 0.5
- 46-60分钟 → 1.0
方法1:使用CASE WHEN语句(通用所有SQL方言)
这种方式逻辑清晰,易于理解和维护,适配所有支持CASE语法的数据库:
SELECT minute_value, CASE WHEN minute_value BETWEEN 1 AND 15 THEN 0.0 WHEN minute_value BETWEEN 16 AND 45 THEN 0.5 WHEN minute_value BETWEEN 46 AND 60 THEN 1.0 ELSE NULL -- 处理不在1-60范围内的异常值,可根据需求调整返回值 END AS rounded_decimal FROM your_table;
方法2:使用数学计算式(简洁写法)
通过算术运算简化分支逻辑,适合追求代码简洁的场景:
SELECT minute_value, FLOOR((minute_value + 14) / 30) * 0.5 AS rounded_decimal FROM your_table;
计算逻辑说明:
- 当
minute_value在1-15时,(minute_value +14)结果为15-29,除以30后小于1,FLOOR取整为0,乘以0.5得到0.0 - 当
minute_value在16-45时,(minute_value +14)结果为30-59,除以30后为1-1.966,FLOOR取整为1,乘以0.5得到0.5 - 当
minute_value在46-60时,(minute_value +14)结果为60-74,除以30后为2-2.466,FLOOR取整为2,乘以0.5得到1.0
内容的提问来源于stack exchange,提问作者FM Plus
相关产品推荐
相关产品推荐

