本投稿の目的
- sql学習サイトsqlzooを用いたsqlの学習と理解
- 学習のアウトプット
- 学習メモとして、かつ公式の解答ページがなかったので作成した。
0 SELECT basics
1 SELECT name
2 SELECT from World←いまここ
3 SELECT from Nobel
4 SELECT within SELECT
5 SUM and COUNT
6 JOIN
7 More JOIN operations
8 Using Null
8+ Numeric Examples
9 Self join
2 SELECT from World
問題1
全ての国の国名と大陸と人口を表示する SQL コマンドを実行する。
SELECT name, continent, population
FROM world
問題2
人口が2億人(200000000 ゼロが8個ある)以上の国の名前を表示する
SELECT name
FROM world
WHERE population >= 200000000
問題3
人口population2億人以上の国の国名nameと国民一人当たりの国内総生産を表示
SELECT name, GDP/population
FROM world
WHERE population >= 200000000
問題4
大陸continentが South America の国のnameとpopulationを 百万人単位 に変換して表示する。
人口 population を 1000000 で割ると100万人単位の人口になる。
SELECT name, population/1000000
FROM world
WHERE continent = 'South America'
問題5
国名nameと人口population を France, Germany, Italy について表示する。
SELECT name, population
FROM world
WHERE name in ('France', 'Germany', 'Italy')
問題6
国名に 'United' を含む国の国名を特定する。
SELECT name
FROM world
WHERE name like '%United%'
問題7
ビッグになる2つの道: ビッグな国とは、面積が 3000000 平方キロ以上 または 人口が 250000000 以上の国とする。
面積か人口がビッグな国を表示する。国名 人口 面積(name, population , area)を表示する。
SELECT name, population, area
FROM world
WHERE area >= 3000000 OR population >= 250000000
問題8
オーストラリアは面積は大きく人口は少ないので、含まれる。
インドネシアは人口は大きく面積は狭いので、含まれる。
中国は人口も面積も大きいので除かれる。
イギリスは人口も面積も小さいので除かれる。
SELECT name, population, area
FROM world
WHERE (area > 3000000 AND population < 250000000)
OR (area < 3000000 and population > 250000000)
問題9
南アメリカ大陸にある国の、国名name、人口population(100万人単位)、GDP(10億ドル単位)を表示する。 ROUND ROUND 関数で小数点下2桁で表示。
SELECT name, ROUND(population/1000000,2), ROUND(gdp/1000000000, 2)
FROM world
WHERE continent = 'South America'
問題10
国内総生産 GDP が1兆ドル以上(0が12個)の国の国名と国民一人当たりのGDPを表示する。 GDPの単位は$1000単位にまとめる。
SELECT name, ROUND(gdp/population, -3)
FROM world
WHERE gdp > 1000000000000
問題11
ギリシャ(Greece) の首都はアテネ(Athens)。 GreeceとAthensの綴りはどちらも同じ6文字。
国名 name と首都 capital が同じ長さの国の、国名と首都を表示する。
LENGTH 関数で文字列の文字数を求める。
SELECT name, capital
FROM world
WHERE LEN(name) = LEN(capital)
問題12
国名と首都の先頭の文字が同じである国
国名と首都名を表示する。
ただし、国名と首都名が同じ場合は除く。
SELECT name, capital
FROM world
WHERE LEFT(name, 1) = LEFT(capital, 1) AND name <> capital;
問題13
国名に全ての母音を含む国
空白を含まない単語1つの国名を検索する。
SELECT name
FROM world
WHERE name LIKE '%a%'
AND name LIKE '%e%'
AND name LIKE '%i%'
AND name LIKE '%o%'
AND name LIKE '%u%'
AND name NOT LIKE '% %';