見出し画像

【SQLZOO答え】2.SELECT from world

SQL入門を勉強するため、友人にSQLの練習問題ないかと聞いたら、
【SQLZOO】というサイトを教えてもらいました。
ただし、問題を解いてるうちに、わからない問題に関して、クエリの答えがおらず、結果しか教えてくれないので、答えをアウトプットしようと思い、noteを始めました。 

0.SQLZOO練習問題

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と国民一人当たりの国内総生産を表示
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

※問題を攻略でき次第、随時更新いたします。 

この記事が気に入ったらサポートをしてみませんか?