我有一个表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 ceil(16000::numeric/7500)
Answers:
您的列具有整数类型,并且整数除法会将结果截断为0。为了获得准确的结果,您需要将至少一个值强制转换为float或小数:
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上的演示。)
此查询会将结果四舍五入到下一个整数
select round(dev_cost ::decimal / sell_cost + 0.5)