【SQLZOO答え】2.SELECT from world
SQL入門を勉強するため、友人にSQLの練習問題ないかと聞いたら、
【SQLZOO】というサイトを教えてもらいました。
ただし、問題を解いてるうちに、わからない問題に関して、クエリの答えがおらず、結果しか教えてくれないので、答えをアウトプットしようと思い、noteを始めました。
0.SQLZOO練習問題
1.導入
このテーブルについて
全ての国の国名と大陸と人口を表示する SQL コマンドを実行して結果を観察する。
select
name, continent, population
from
world
2.大きな国々
人口が2億人(200000000 ゼロが8個ある)以上の国の名前を表示
select
name
from
world
where
population > 200000000
3.国民一人当たりの国内総生産
人口population2億人以上の国の国名nameと国民一人当たりの国内総生産を表示
HELP: 国民一人当たりの国内総生産の計算法
国民一人当たりの国内総生産は、国内総生産 GDP を 人口 population で割った値。式は GDP/population
select
name, gdp/population
from
world
where
population >= 200000000
4.南アメリカを100万人単位で
大陸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 = 'france'
or name = 'germany'
or name = 'italy'
6.ユナイテッド
国名に 'United' を含む国の国名を特定する。
select
name
from
world
where
name like '%united%'
7.ビッグになる2つの道
ビッグになる2つの道: ビッグな国とは、面積が 3000000 平方キロ以上 または 人口が 250000000 以上の国とする。面積か人口がビッグな国を表示する。国名 人口 面積(name, population , area)を表示する。
select
name, population, area
from
world
where
area >= 3000000
or population >= 250000000
8.どちらか片方だけ(両方はダメ)
排他的論理和 Exclusive OR (XOR)の問題。面積か人口のどちらかだけ(両方は除く)が大きな国を表示する。国名 人口 面積を表示する(name, population, area)。
オーストラリアは面積は大きく人口は少ないので、含まれる。
インドネシアは人口は大きく面積は狭いので、含まれる。
中国は人口も面積も大きいので除かれる。
イギリスは人口も面積も小さいので除かれる。
select
name, population, area
from
world
where
area >= 3000000
xor population >= 250000000
9.端数の丸め
南アメリカ大陸にある国の、国名name、人口population(100万人単位)、GDP(10億ドル単位)を表示する。 ROUND ROUND 関数で小数点以下の数値を2桁に丸める。
南アメリカ大陸にある国の国名と人口(100万人単位)とGDP(10億ドル単位)を小数点以下2桁に丸めて表示する。
100万単位 10億単位
1000000 (ゼロが6個 zeros)で割ると100万単位。1000000000(ゼロが9個)で割ると10億単位
select
name, round(population/1000000, 2), round(gdp/1000000000, 2)
from
world
where
continent = 'South America'
10.1兆ドル経済
国内総生産 GDP が1兆ドル以上(0が12個)の国の国名と国民一人当たりのGDPを表示する。 GDPの単位は$1000単位にまとめる。
GDPが1兆ドル以上の国の国名と国民一人当たりの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
LENGTH(name) = LENGTH(capital)
12.国名と首都の一致
スウェーデン Sweden の首都はストックホルム Stockholm 。どちらもSから始まる。
国名と首都の先頭の文字が同じである国の、国名と首都名を表示する。ただし、国名と首都名が同じ場合は除く。
文字列の先頭一文字を切り取るには、 LEFT を使う。
記号 <> を NOT EQUALS 演算子の代わりに利用できる。
select
name, capital
from
world
where
LEFT(name,1) = LEFT(capital,1)
and name <> capital
13.全ての母音
Equatorial Guinea (エクアトリアル ギニア)と Dominican Republic(ドミニカ共和国)はどちらも全ての母音(a e i o u)を国名に含んでいる。これらの国は、名前に単語が2つ以上あるので以下の対象としない。
国名に全ての母音を含む国で、空白を含まない単語1つの国名を検索する。name NOT LIKE '%a%' で特定の文字を含む国を除外できる。
入力済みのSQLはBから始まる国名を表示するが、バハマ Bahamas と ベラルーシ Belarus は少なくとも1つ以上のaを含むので表示されない。
select
name
from
world
where
name LIKE '%a%'
AND name LIKE '%i%'
AND name LIKE '%u%'
AND name LIKE '%e%'
AND name LIKE '%o%'
AND name NOT LIKE '% %'
その他の答えへ
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
10.Tutorial Quizzes
11.Tutorial Student Records
12.Tutorial DDL
※問題を攻略でき次第、随時更新いたします。
この記事が気に入ったらサポートをしてみませんか?