我有一个名为software
的表格,其中包含dev_cost
和sell_cost
两列。如果dev_cost
是16000,sell_cost
是7500,那么我该如何找出需要销售多少份软件才能收回dev_cost
?
我的查询如下:
select dev_cost / sell_cost from software ;
它返回2作为答案。但是我们需要得到3,对吧?
那么查询应该是什么?
我有一个名为software
的表格,其中包含dev_cost
和sell_cost
两列。如果dev_cost
是16000,sell_cost
是7500,那么我该如何找出需要销售多少份软件才能收回dev_cost
?
我的查询如下:
select dev_cost / sell_cost from software ;
它返回2作为答案。但是我们需要得到3,对吧?
那么查询应该是什么?
您的列具有整数类型,并且整数除法会将结果向零截断。为了获得准确的结果,您需要将至少一个值转换为浮点数或小数:
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
您还可以将变量转换为所需的类型,然后进行除法运算:
SELECT (dev_cost::numeric/sell_cost::numeric);
您可以将值四舍五入,并指定小数点后的位数:
SELECT TRUNC((dev_cost::numeric/sell_cost::numeric),2);
select round(dev_cost ::decimal / sell_cost + 0.5)
select ceil(16000::numeric/7500)
。该代码将返回结果并向上取整,计算出 16000 除以 7500 的结果。 - Vivek S.