1

良い一日。

国に関する情報で満たされた複数のテーブルがあります。これらのテーブルの 1 つには、各国の人口が含まれています。もう1つは、各言語の話者の割合が含まれています。

この 2 つの数字を使って、各言語の話者数を列にまとめます... 基本的には、それらを乗算します。これは簡単です。ただし、単純ではないのは、本来あるべき方法でそれらを表示することです。

私が使用しているクエリは次のとおりです。

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

通常、私はこれらの整数をいずれかのフレーバーにするだけで、これで問題は解決します。しかし、ご覧のとおり、四捨五入したい数値は必ずしも小数点の後にあるとは限りません。

これらを丸めるにはどうすればよいですか?

これが私の Web サイトです (選択するのはクエリ 5 です)。

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

一致するはずのページは次のとおりです。

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

テーブル全体に一貫性がないことがわかります。

前もって感謝します!

編集:

サイトを更新して、人口とパーセンテージの数値を含めました。うまくいけば、それは何らかの形で役立ちます。

4

1 に答える 1

1

方程式の結果を丸めるだけですか?

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

パーセンテージ形式に対応するために必要な変更を追加するには:

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

とにかく、部門は結果を切り捨てたり丸めたりするかもしれません。テストするPostgreSQLが手元にありません。

于 2013-02-11T01:33:16.830 に答える