分区 ( / ) 没有在 postgresql 中给出我的答案
Division ( / ) not giving my answer in postgresql
我有一个 table software
,其中的列为 dev_cost
、sell_cost
。如果dev_cost
是16000,sell_cost
是7500,我如何找到软件的销售数量以恢复dev_cost
?
我查询如下:
select dev_cost / sell_cost from software ;
它正在返回 2 作为答案。但是我们需要得到 3,对吗?
查询的内容是什么?
您的列是整数类型,integer division truncates the result towards zero. To get an accurate result, you'll need to :
select cast(dev_cost as decimal) / sell_cost from software ;
或者只是:
select dev_cost::decimal / sell_cost from software ;
然后您可以使用 ceil()
函数将结果四舍五入为最接近的整数:
select ceil(dev_cost::decimal / sell_cost) from software ;
(参见 demo on SQLFiddle。)
此查询会将结果四舍五入为下一个整数
select round(dev_cost ::decimal / sell_cost + 0.5)
您可以将整数类型转换为 numeric
并使用 ceil()
函数来获得所需的输出
The PostgreSQL ceil function returns the smallest integer value that
is greater than or equal to a number.
SELECT 16000::NUMERIC / 7500 col
,ceil(16000::NUMERIC / 7500)
结果:
col ceil
------------------ ----
2.1333333333333333 3
所以你的查询应该是
select ceil(dev_cost::numeric/sell_cost)
from software
您也可以将变量转换为所需的类型,然后应用除法:
SELECT (dev_cost::numeric/sell_cost::numeric);
您可以四舍五入,并指定小数点后的位数:
SELECT TRUNC((dev_cost::numeric/sell_cost::numeric),2);
我有一个 table software
,其中的列为 dev_cost
、sell_cost
。如果dev_cost
是16000,sell_cost
是7500,我如何找到软件的销售数量以恢复dev_cost
?
我查询如下:
select dev_cost / sell_cost from software ;
它正在返回 2 作为答案。但是我们需要得到 3,对吗?
查询的内容是什么?
您的列是整数类型,integer division truncates the result towards zero. To get an accurate result, you'll need to
select cast(dev_cost as decimal) / sell_cost from software ;
或者只是:
select dev_cost::decimal / sell_cost from software ;
然后您可以使用 ceil()
函数将结果四舍五入为最接近的整数:
select ceil(dev_cost::decimal / sell_cost) from software ;
(参见 demo on SQLFiddle。)
此查询会将结果四舍五入为下一个整数
select round(dev_cost ::decimal / sell_cost + 0.5)
您可以将整数类型转换为 numeric
并使用 ceil()
函数来获得所需的输出
The PostgreSQL ceil function returns the smallest integer value that is greater than or equal to a number.
SELECT 16000::NUMERIC / 7500 col
,ceil(16000::NUMERIC / 7500)
结果:
col ceil
------------------ ----
2.1333333333333333 3
所以你的查询应该是
select ceil(dev_cost::numeric/sell_cost)
from software
您也可以将变量转换为所需的类型,然后应用除法:
SELECT (dev_cost::numeric/sell_cost::numeric);
您可以四舍五入,并指定小数点后的位数:
SELECT TRUNC((dev_cost::numeric/sell_cost::numeric),2);