2013-02-11 55 views
1

美好的一天。将Postgre中的列中的数字舍入为最接近的整数

我有多个表格,里面填充了关于国家的信息。其中一个表格包含每个国家的人口数字;另一个包含每种语言的发言者的百分比。

我们将采取这两个数字,并列出一列,列出每种语言有多少发言者......基本上,我们将它们相乘。这很简单。但是,并不简单的是以我们应该的方式展示它们。

下面是我使用的查询:

SELECT country.name AS \"country\", 
     city.name AS \"capital\", 
     country_language.language, 
     (country.population * country_language.percentage) AS \"speakers\" 
FROM lab2.country, lab2.country_language, lab2.city 
WHERE country.country_code = country_language.country_code 
AND city.id = country.capital 
AND country_language.is_official = true 
ORDER BY country.name, 
     (country_language.percentage * country.population) DESC; 

这是第一个结果表单元格填充:

1190528034.66797 

这里就是它应该是:

11905280 

通常情况下,我只是做一个味或其他这些整数,而这将解决这个问题。但正如你所看到的,我想要舍去的数字不一定在小数点后出现。

我应该怎么做才能把这些关掉?

这里是我的网站(它的查询5要选择):

http://babbage.cs.missouri.edu/~asm3kf/cs3380/lab2/lab2.php

,这里是我们应该匹配的页面:

http://babbage.cs.missouri.edu/~klaricm/cs3380/lab2/lab2.php

你看到不一致贯穿整个表格。

在此先感谢!

编辑:

我更新了网站,包括人口和百分比数字。希望这在某种程度上有所帮助。

+0

使用ceil/floor/round可能有所帮助,但预期结果比实际小2个数量级,是对的还是缺少一些数字? – Marc 2013-02-11 01:35:03

+1

它看起来像你的'country_language.percentage'被保存为百分比即。 '75%',而不是小数即。 '.75'。所以,你的第一个步骤将是转换的,然后用['轮()'](http://www.postgresql.org/docs/9.1/static/functions-math.html) – Sean 2013-02-11 01:37:38

+0

肖恩, 百分比根据模式,数字被存储为实数。 – nerdenator 2013-02-11 01:43:30

回答

1

只是围绕等式结果?

round(country.population * country_language.percentage) AS \"speakers\" 

添加所需的改变,以适应百分比格式:

round(country.population * (country_language.percentage/100)) AS \"speakers\" 

分工MIGHT截断/轮的结果对你的,我不手头测试的PostgreSQL。

+0

好眼睛,我没有想到要在实际百分比上做转换! 有一个原因,我正在做专业少数学......:P – nerdenator 2013-02-11 02:00:25

相关问题