プログラミング

2. SELECT from world/SQL ZOOの答えと解説

sql_zoo_2 select

SQLZooの答えと解説です。

今までの解説はこちら

3. SELECT from Nobel /SQL ZOO の答えと解説
4. SELECT within SELECT/SQL ZOO の答えと解説
5. SUM and COUNT/SQL Zooの答えと解説
6. JOIN /SQL ZOOの答えと解説
7. More JOIN operations /SQL ZOOの答えと解説
8. Using NUll/SQL Zooの答えと解説
9. Self JOIN /SQL ZOO の答えと解説

1. 全ての国の国名と大陸と人口を表示する SQL コマンドを実行して結果を観察する。

  Q. Observe the result of running this SQL command to show the name, continent and population of all countries.

SELECT name, continent, population
FROM world

2. 人口が2億人(200000000 ゼロが8個ある)以上の国の名前を表示

  Q. Show the name for the countries that have a population of at least 200 million.
200 million is 200000000, there are eight zeros.

SELECT name
FROM world
WHERE population > 200000000

3. 人口population2億人以上の国の国名nameと国民一人当たりの国内総生産を表示

  Q. Give the name and the per capita GDP for those countries with a population of at least 200 million.

SELECT name, gdp/population
FROM world
WHERE population >= 200000000

4. 大陸continentが South America の国のnameとpopulationを百万人単位に変換して表示する。

人口 population を 1000000 で割ると100万人単位の人口になる。

Q. Show the name and population in millions for the countries of the continent ‘South America’.
Divide the population by 1000000 to get population in millions.

SELECT name, population/1000000
FROM world
WHERE continent = 'South America'

5. 国名nameと人口population を France, Germany, Italy について表示する。

Q. Show the name and population for France, Germany, Italy

SELECT name, population
FROM world
WHERE name = 'france'
OR name = 'germany'
OR name = 'italy'

6. 国名に ‘United’ を含む国の国名を特定する。

Q. Show the countries which have a name that includes the word ‘United’ 部分一致なので、前と後に%です。

SELECT name
FROM world
WHERE name LIKE '%united%'

7. 面積か人口がビッグな国を表示する。国名 人口 面積(name, population , area)を表示する。

ビッグになる2つの道: ビッグな国とは、面積が 3000000 平方キロ以上または人口が 250000000 以上の国とする。

Two ways to be big: A country is big if it has an area of more than 3 million sq km or it has a population of more than 250 million.

Q. Show the countries that are big by area or big by population. Show name, population and area.

SELECT name, population, area
FROM world
WHERE area >= 3000000
OR population >= 250000000

8. 排他的論理和 Exclusive OR (XOR)の問題。面積か人口のどちらかだけ(両方は除く)が大きな国を表示する。

国名 人口 面積を表示する(name, population, area)。

– オーストラリアは面積は大きく人口は少ないので、含まれる。
– インドネシアは人口は大きく面積は狭いので、含まれる。
– 中国は人口も面積も大きいので除かれる。
– イギリスは人口も面積も小さいので除かれる。

Q. Exclusive OR (XOR). Show the countries that are big by area (more than 3 million) or big by population (more than 250 million) but not both.

Show name, population and area. – Australia has a big area but a small population, it should be included.

– Indonesia has a big population but a small area, it should be included.
– China has a big population and big area, it should be excluded.
– United Kingdom has a small population and a small area, it should be excluded.

SELECT name, population, area
FROM world
WHERE area >= 3000000
XOR population >= 250000000

9. 南アメリカ大陸にある国の国名と人口(100万人単位)とGDP(10億ドル単位)を小数点以下2桁に丸めて表示する。

南アメリカ大陸にある国の、国名name、人口population(100万人単位)、GDP(10億ドル単位)を表示する。

ROUND ROUND 関数で小数点以下の数値を2桁に丸める。

Show the name and population in millions and the GDP in billions for the countries of the continent ‘South America’.
Use the ROUND function to show the values to two decimal places.

Q. For South America show population in millions and GDP in billions both to 2 decimal places.

100万人単位なので、割ってroundでまとめる。

SELECT name, round(population/1000000, 2), round(gdp/1000000000, 2)
FROM world
WHERE continent = 'South America'

10. GDPが1兆ドル以上の国の国名と国民一人当たりのGDPを1000ドル単位に丸めて表示する。

国内総生産 GDP が1兆ドル以上(0が12個)の国の国名と国民一人当たりのGDPを表示する。

GDPの単位は$1000単位にまとめる。

Show the name and per-capita GDP for those countries with a GDP of at least one trillion (1000000000000; that is 12 zeros).
Round this value to the nearest 1000.

Q. Show per-capita GDP for the trillion dollar countries to the nearest $1000.

GDPの単位を$1000単位とするため、roundで丸める際の桁数に注意。

SELECT name, round(gdp/population, -3)
FROM world
WHERE gdp >= 1000000000000

11. 国名 name と首都 capital が同じ長さの国の、国名と首都を表示する。

ギリシャ(Greece) の首都はアテネ(Athens)。 GreeceとAthensの綴りはどちらも同じ6文字。

Greece has capital Athens. Each of the strings ‘Greece’, and ‘Athens’ has 6 characters.

Q. Show the name and capital where the name and the capital have the same number of characters.
You can use the LENGTH function to find the number of characters in a string

SELECT name, capital
FROM world
WHERE LENGTH(name) = LENGTH(capital)

12. 国名と首都の先頭の文字が同じである国の、国名と首都名を表示する。

ただし、国名と首都名が同じ場合は除く。 スウェーデン Sweden の首都はストックホルム Stockholm 。
どちらもSから始まる。

– 文字列の先頭一文字を切り取るには、LEFTを使う。
– 記号 `<>` を NOT EQUALS 演算子の代わりに利用できる。

The capital of Sweden is Stockholm. Both words start with the letter ‘S’.

Q. Show the name and the capital where the first letters of each match. Don’t include countries where the name and the capital are the same word.

– You can use the function [LEFT](https://sqlzoo.net/wiki/LEFT) to isolate the first character.
– You can use `<>` as the NOT EQUALS operator.

LEFT関数を使うことで、文字列の先頭を切り出して比較します。

SELECT name, capital
FROM world
WHERE LEFT(name,1) = LEFT(capital,1)
AND name <> capital

13. 国名に全ての母音を含む国で、空白を含まない単語1つの国名を検索する。

Equatorial Guinea (エクアトリアル ギニア)と Dominican Republic(ドミニカ共和国)はどちらも全ての母音(a e i o u)を国名に含んでいる。
これらの国は、名前に単語が2つ以上あるので以下の対象としない。

– name NOT LIKE ‘%a%’ で特定の文字を含む国を除外できる。
– 入力済みのSQLはBから始まる国名を表示するが、バハマ Bahamas と ベラルーシ Belarus は少なくとも1つ以上のaを含むので表示されない。

Equatorial Guinea and Dominican Republic have all of the vowels (a e i o u) in the name. They don’t count because they have more than one word in the name.

Q. Find the country that has all the vowels and no spaces in its name.

– You can use the phrase `name NOT LIKE ‘%a%’` to exclude characters from your results.
– The query shown misses countries like Bahamas and Belarus because they contain at least one ‘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 '% %'

 

 

https://marucoblog.com/programing/3-select-from-nobel/

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です