【问题标题】:Round number UP to multiple of 10向上取整到 10 的倍数
【发布时间】:2013-04-26 14:07:18
【问题描述】:

如何在 PostgreSQL 中轻松将数字向上舍入到 10 的倍数?

例子:

In      Out
100 --> 100
111 --> 120
123 --> 130

样本数据:

create table sample(mynumber numeric);

insert into sample values (100);
insert into sample values (111);
insert into sample values (123);

我可以使用:

select 
 mynumber,
 case
    when mynumber = round(mynumber,-1) then mynumber 
    else round(mynumber,-1) + 10 end as result
from
 sample;

这很好用,但看起来很难看。有没有更简单的方法来做到这一点?

你可以找到SQLFiddle here

【问题讨论】:

  • (number + 9)/10 可以直接应用于所有情况,以得到 10 的倍数。不确定如何在 postgresql 中使用。
  • 数字可以是负数吗?是的,指定四舍五入“向上”。可以有小数吗?
  • 就我而言,我确实只有正数。有小数位。

标签: postgresql postgresql-9.1


【解决方案1】:
select ceil(a::numeric / 10) * 10
from (values (100), (111), (123)) s(a);
 ?column? 
----------
      100
      120
      130

【讨论】:

  • 不错。我使用带小数点的除数而不是显式转换为数字,例如ceil(a / 10.0) * 10.
猜你喜欢
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 2014-12-23
相关资源
最近更新 更多