アコーディオンボックス内容環境構築・基礎知識編がまだの方はこちらから

【基礎知識編】mysql入門
本記事では、mysql入門ということで、mysqlを操作するための環境構築から基礎知識や基本的な操作方法、応用的な使い方まで一気に説明しています。
問題
問1
countrylanguageテーブルから全件レコードを取得せよ(カラムはすべて取得すること)
select * from countrylanguage
問2
cityテーブルから全件レコードを取得せよ。(カラムはID、Nameを取得し、それぞれ言語ID、言語名というカラム名を付与すること)
select ID “言語ID”, Name “言語名” from city
問3
cityテーブルから、人口の多い順に5件取得せよ
select * from city order by Population DESC LIMIT 5
問4
cityテーブルから、人口が5番目に多いレコードから5件取得せよ
select * from city order by Population DESC LIMIT 5 OFFSET 4
問5
ヨーロッパ大陸に位置する国の一覧を抽出せよ(全カラム)
ヒント:where
select * from country where Continent = “Europe”
問6
countryテーブルから国名が”ba”で始まるレコードを抽出せよ
ヒント:like
問7
cityテーブルからCoutryCode単位で人口が最大のレコードを人口数の降順で抽出せよ
ヒント:group by
select CountryCode, MAX(Population) as m_population from city GROUP BY CountryCode order BY m_population DESC
問8
人口の平均が10万以上の都道府県の名称とその値を抽出せよ
ヒント:having
SELECT District, ROUND(AVG(Population)) population_ave FROM `city` WHERE CountryCode = “JPN” GROUP BY District HAVING population_ave >= 100000
問9
国コードごとに人口が一番多い都市の人口を表示せよ
ヒント:cityテーブルをwhere句を使用して絞り込み、countryテーブルにカラムとして追加する。もしくは、joinする
SELECT
country.Name, country.Code,
(
SELECT
MAX(city.Population)
FROM
city
WHERE
country.Code = city.CountryCode
) as max_city_population
FROM
country
country.Name, country.Code,
(
SELECT
MAX(city.Population)
FROM
city
WHERE
country.Code = city.CountryCode
) as max_city_population
FROM
country
SELECT
country.Name, country.Code, MAX(city.Population) as max_city_population
FROM
country
JOIN city ON country.Code = city.CountryCode
GROUP BY
country.Code, country.Name
country.Name, country.Code, MAX(city.Population) as max_city_population
FROM
country
JOIN city ON country.Code = city.CountryCode
GROUP BY
country.Code, country.Name
問10
countryテーブルから人口が1億より多い国をA, 5000万以上1億未満をB,それ以外をCとしてカラム(Group)を追加して表示せよ
ヒント:CASE分を使用して条件分岐する
SELECT
*,
CASE
WHEN Population >= 100000000 THEN “A”
WHEN Population < 100000000 AND Population >= 50000000 THEN “B”
ELSE “C”
END AS “population_group”
FROM
country
*,
CASE
WHEN Population >= 100000000 THEN “A”
WHEN Population < 100000000 AND Population >= 50000000 THEN “B”
ELSE “C”
END AS “population_group”
FROM
country
問11
countryテーブルから人口が平均以上の国を抽出せよ
ヒント:サブクエリを使用する
SELECT * FROM country
WHERE
Population >=
(
SELECT
AVG(Population)
FROM
country
)
WHERE
Population >=
(
SELECT
AVG(Population)
FROM
country
)
以上です。