查询以四舍五入(例如:300.501 到 300.500)

Posted

技术标签:

【中文标题】查询以四舍五入(例如:300.501 到 300.500)【英文标题】:Query to Round the numbers (ex: 300.501 to 300.500) 【发布时间】:2019-05-26 02:52:06 【问题描述】:

我有如下需求:(需要SQL查询) - 如果输入是 300.501,那么输出应该是 300.500 - 如果 300.503 那么输出应该是 300.505 - 如果 300.507 那么输出应该是 300.505 - 如果是 300.508 那么输出应该是 300.510

所以,基本上我认为它是四舍五入到最接近的 5

尝试了几个舍入函数但没有成功。我们是否需要截断最后一位数字并相应地更改整个数字?

【问题讨论】:

你会像在常规算术中那样做。除以 5。将结果四舍五入。乘以 5。 【参考方案1】:

要将数据四舍五入到最接近的 0.005 (1/200),将其乘以 200,四舍五入,然后除以 200,例如

SELECT ROUND(300.501*200) / 200, ROUND(300.503*200) / 200

输出:

ROUND(300.501*200) / 200    ROUND(300.503*200) / 200
300.5000                    300.5050

Demo on dbfiddle

【讨论】:

为什么投反对票?这不会产生 OP 使用 SQL 查询所要求的结果吗?

以上是关于查询以四舍五入(例如:300.501 到 300.500)的主要内容,如果未能解决你的问题,请参考以下文章

Oracle - 从时间戳值导出分钟

MS ACCESS OpenRecordset 四舍五入小数

Redshift - 在查询的“输入”部分使用 300K 的值进行查询

JAVA编程:输出值要求格式化为:以逗号作为每千位的间隔符,并且小数点后四舍五入为两位。例如:123.45

如何以超过 15 秒的速度对超过 300 万条记录的表进行此查询?

MySQL分表时机:100w?300w?500w?都对也都不对!