2013-02-11 68 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

相關問題