mysql練習問題

アコーディオンボックス内容環境構築・基礎知識編がまだの方はこちらから
【基礎知識編】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
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

問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

問11

countryテーブルから人口が平均以上の国を抽出せよ

ヒント:サブクエリを使用する

SELECT * FROM country
WHERE
Population >=
(
SELECT
AVG(Population)
FROM
country
)

以上です。

MySQL学習におすすめの書籍

MySQL徹底入門 第4版 MySQL 8.0対応 [ yoku0825 ]
楽天ブックス
¥ 4,180(2022/02/06 20:47時点)
タイトルとURLをコピーしました