以下のようなテーブルがあり、ドイツ語を母国語としている国を選択しドイツ語を
利用している人口を合計して算出する場合の例

スカラー【scalar】 別ウィンドウで表示
長さ・面積・質量・温度・時間など、大きさだけで定まる数量。スカラー量

■ドイツ語を利用しているCountryCode 、IsOfficial 、Percentage を確認
mysql> select * from CountryLanguage where Language = 'German'
-> and IsOfficial = 'T';

+————-+———-+————+————+
| CountryCode | Language | IsOfficial | Percentage |
+————-+———-+————+————+
| AUT | German | T | 92.0 |
| LIE | German | T | 89.0 |
| DEU | German | T | 91.3 |
| CHE | German | T | 63.6 |
| BEL | German | T | 1.0 |
| LUX | German | T | 2.3 |
+————-+———-+————+————+
6 rows in set (0.01 sec)

■西ヨーロッパの国々のリスト
mysql> select Code,Name,Population from Country where Region = 'Western Europe';
+——+—————+————+
| Code | Name | Population |
+——+—————+————+
| NLD | Netherlands | 15864000 |
| BEL | Belgium | 10239000 |
| AUT | Austria | 8091800 |
| LIE | Liechtenstein | 32300 |
| LUX | Luxembourg | 435700 |
| MCO | Monaco | 34000 |
| FRA | France | 59225700 |
| DEU | Germany | 82164700 |
| CHE | Switzerland | 7160400 |
+——+—————+————+
9 rows in set (0.00 sec)

■西ヨーロッパの国々からドイツ語をオフィシャル言語として利用している国を確認。
mysql> select Code Name,Population from Country where Region = 'Western Europe'
-> and Code IN
-> (select CountryCode from CountryLanguage where Language = 'German'
-> and IsOfficial = 'T');

+——+————+
| Name | Population |
+——+————+
| BEL | 10239000 |
| AUT | 8091800 |
| LIE | 32300 |
| LUX | 435700 |
| DEU | 82164700 |
| CHE | 7160400 |
+——+————+
6 rows in set (0.00 sec)

mysql>

■ドイツ語をオフィシャル言語としている国の総人口を見てみる。
mysql> select sum(Population) as 'German Speaker' from Country where
-> Region = 'Western Europe' and Code IN
-> (select CountryCode from CountryLanguage where Language = 'German'
-> and IsOfficial = 'T');

+—————-+
| German Speaker |
+—————-+
| 108123900 |
+—————-+
1 row in set (0.01 sec)


select sum(Population) as 'Not Only German Speakers' from Country where
Region = 'Western Europe' and Code IN
(select CountryCode from CountryLanguage where Language = 'German'
and IsOfficial = 'T');

■ドイツ語をオフィシャル言語としている国の中で、ドイツ語を利用している人口を確認してみる。

SELECT SUM(Speakers) AS German_Speakers
FROM (SELECT (C.Population * CL.Percentage) / 100 AS Speakers
FROM CountryLanguage CL, Country C
WHERE CL.CountryCode = C.Code
AND C.Region = 'Western Europe'
AND CL.Language = 'German'
) AS T_German_Speakers;


SELECT ROUND(SUM(Speakers)) AS German_Speakers
FROM (SELECT (C.Population * CL.Percentage) / 100 AS Speakers
FROM CountryLanguage CL, Country C
WHERE CL.CountryCode = C.Code
AND C.Region = 'Western Europe'
AND CL.Language = 'German'
) AS T_German_Speakers;

round

参考サイト
12.2.8.1. スカラ演算子としてのサブクエリ
10.2. 数値タイプ

Comments are closed.

Post Navigation