Skip to content
Playground

演習: world データベース

world データベースで練習します。最初に USE world; で切り替えてください。

country — 239 カ国の情報

カラム名説明
CodeCHAR(3)国コード(主キー)
NameCHAR(52)国名
ContinentENUM大陸(Asia, Europe, North America, South America, Africa, Oceania, Antarctica
RegionCHAR(26)地域
SurfaceAreaDECIMAL(10,2)面積(km²)
IndepYearSMALLINT独立年(NULL あり)
PopulationINT人口
LifeExpectancyDECIMAL(3,1)平均寿命(NULL あり)
GNPDECIMAL(10,2)国民総生産(NULL あり)

city — 都市の情報

カラム名説明
IDINT都市 ID(主キー)
NameCHAR(35)都市名
CountryCodeCHAR(3)国コード(外部キー → country.Code
DistrictCHAR(20)地区
PopulationINT人口

countrylanguage — 言語の情報

カラム名説明
CountryCodeCHAR(3)国コード(外部キー → country.Code
LanguageCHAR(30)言語名
IsOfficialENUM('T','F')公用語かどうか
PercentageDECIMAL(4,1)話者の割合

1. 都市名から都市情報を調べる

Section titled “1. 都市名から都市情報を調べる”

city テーブルから、都市名が 'Tokyo' の都市について、国コード、地区、人口を表示してください。

期待される結果
CountryCodeDistrictPopulation
JPNTokyo-to7980230
ヒント

WHERE 列 = 値 で値の一致を判定します。文字列値はシングルクォートで囲みます。

country テーブルから、国名が 'land' で終わる国の国名と人口を、人口の多い順に表示してください。

期待される結果
NamePopulation
Thailand61399000
Poland38653600
Switzerland7160400
Finland5171300
New Zealand3862000
Ireland3775100
Swaziland1008000
Iceland279000
Greenland56000
Christmas Island2500
Norfolk Island2000
Bouvet Island0
ヒント

LIKE '%パターン' で後方一致を表せます。% は 0 文字以上の任意の文字列にマッチします。

3. 独立が新しい国を平均寿命付きで並べる

Section titled “3. 独立が新しい国を平均寿命付きで並べる”

country テーブルから、独立年が 1992 年以降で、かつ平均寿命(LifeExpectancy)が記録されている国について、国名、独立年、平均寿命を、独立年の古い順、同じ独立年の中では国名の昇順に表示してください。

期待される結果
NameIndepYearLifeExpectancy
Bosnia and Herzegovina199271.5
Czech Republic199374.5
Eritrea199355.8
Slovakia199373.7
Palau199468.6
ヒント

>= で「以上」を判定します。NULL でないことは IS NOT NULL で判定します(!= NULL<> NULL は正しく動作しません)。複数の条件は AND で組み合わせ、ORDER BY はカンマ区切りで複数のキーを指定できます。

4. 大陸ごとの平均面積を調べる

Section titled “4. 大陸ごとの平均面積を調べる”

country テーブルから、大陸ごとの平均面積を小数第 2 位で四捨五入した値を、平均面積の大きい順に表示してください。平均面積のカラム名は avg_area とします。

期待される結果
Continentavg_area
Antarctica2626420.20
South America1276066.14
North America654445.14
Asia625117.75
Africa521558.22
Europe501068.13
Oceania305867.64
ヒント

GROUP BY 列 で同じ値の行をひとつのグループにまとめ、集計関数でグループ単位の値を求めます。ROUND(値, 桁数) で小数点以下の桁数を指定して四捨五入できます。ORDER BY には AS で付けたエイリアス名を直接使えます。

5. 有力な言語を多く持つ国を調べる

Section titled “5. 有力な言語を多く持つ国を調べる”

countrylanguage テーブルから、話者割合(Percentage)が 10% 以上の言語を対象として、そのような言語が 4 つ以上記録されている国コードを、該当言語数の多い順、同数の場合は国コードの昇順に表示してください。該当言語数のカラム名は lang_count とします。

期待される結果
CountryCodelang_count
KEN5
CIV4
COD4
GAB4
NGA4
ヒント

WHERE は行単位の絞り込み、HAVING はグループ化された後の絞り込みです。先に WHERE Percentage >= 10 で行を絞り、GROUP BY CountryCode でまとめてから、HAVING COUNT(*) >= 4 でグループを絞ります。

6. 北米の国ごとの都市人口合計を調べる

Section titled “6. 北米の国ごとの都市人口合計を調べる”

countrycity を結合し、北米大陸(North America)に属する国ごとに、その国に登録されている都市の人口合計を、人口合計の多い順に上位 10 件表示してください。国名と人口合計を出力し、人口合計のカラム名は total_city_pop とします。

期待される結果
Nametotal_city_pop
United States78625774
Mexico59752521
Canada12673840
Cuba4629925
Dominican Republic2438276
Puerto Rico1564174
Haiti1517338
Honduras1287000
Nicaragua1269223
Guatemala1225188
ヒント

countrycityON country.Code = city.CountryCode で結合します。大陸の絞り込みを WHERE で行い、国ごとに GROUP BY してから SUM(city.Population) を計算します。上位 N 件は ORDER BY ... DESC LIMIT N で取り出します。