我有一个表software
和列,作为dev_cost
,sell_cost
.如果dev_cost
是16000并且sell_cost
是7500.
如何找到要销售的软件数量以便恢复dev_cost
?
我查询如下:
select dev_cost / sell_cost from software ;
它回答2作为答案.但我们需要得到3,对吧?
对此有什么疑问?提前致谢.
您的列具有整数类型,整数除法将结果截断为零.要获得准确的结果,您需要将至少一个值转换为float或decimal:
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 ;
(参见关于SQLFiddle的演示.)
您可以将整数类型转换为numeric
并使用ceil()
函数来获取所需的输出
PostgreSQL ceil函数返回大于或等于数字的最小整数值。
SELECT 16000::NUMERIC / 7500 col ,ceil(16000::NUMERIC / 7500)
结果:
col ceil ------------------ ---- 2.1333333333333333 3
所以你的查询应该是
select ceil(dev_cost::numeric/sell_cost) from software