【SQLZOO答え】4.SELECT within SELECT
SQL入門を勉強するため、友人にSQLの練習問題ないかと聞いたら、
【SQLZOO】というサイトを教えてもらいました。
ただし、問題を解いてるうちに、わからない問題に関して、クエリの答えがおらず、結果しか教えてくれないので、答えをアウトプットしようと思い、noteを始めました。
0.SQLZOO練習問題
1.ロシアより大きい
ロシア(Russia)よりも人口(population)が多い国の名前を表示する。
world(name 国名, continent 大陸, area 面積, population 人口, gdp 国内総生産)
select
name
from
world
where
population >(select population
from world
where name = 'Russia');
2.イギリスより豊か
国民一人当たりの国内総生産がイギリス 'United Kingdom' よりも大きなヨーロッパの国を表示する。
国内総生産
国内総生産の式は gdp/population
select
name
from
world
where
gdp/population > (select gdp/population
from world
where name = 'United Kingdom' )
and continent = 'Europe';
3.アルゼンチンとオーストラリアの近所
'Argentina'または'Australia'を含む大陸にある国の、国名と大陸を表示する。国名順に表示する。
select
name, continent
from
world
where continent in (select continent
from world
where name = 'Argentina' or name ='Australia')
order by name;
4.カナダとポーランドの間
人口がカナダ Canadaよりも多く、ポーランドPolandよりも少ない国の、国名と人口を表示する。
select
name, population
from
world
where
population >
(select population
from world
where name = 'Canada')
and
population <
(select population
from world
where name = 'Poland');
5.ドイツのパーセント
ドイツは(人口 80000000人)とヨーロッパで最大の人口の国である。オーストリア(人口8500000人)はドイツの人口の11%である。
ヨーロッパの各国について 国名と人口を表示する。ドイツ人口の何%かで表示する。
小数点以下:ROUND関数で小数点以下を除去できる。
パーセント記号 %:CONCAT関数で記号を付け加えられる。
select
name, concat(round(population/
(select population
from world
where name = 'Germany')*100,0),'%')
from
world
where
continent = 'Europe';
6.ヨーロッパで最大の国
ヨーロッパのどの国のGDPよりも大きなGDPを持つ国の国名だけを表示する。(GDPがNULL の国も有る)。
select
name
from
world
where
gdp > (select max(gdp)
from world
where continent = 'Europe');
7.各大陸で最大
各大陸のもっとも大きな国(面積で)の大陸、国名、面積を表示する。
select
continent, name, area
FROM
world A
WHERE
area >= ALL(SELECT area
FROM world B
WHERE B.continent=A.continent);
8.各大陸で先頭の国(アルファベット順)
各大陸の中でアルファベット順で先頭になる国の大陸と国名を表示する。
select
continent, min(name)
from
world
group by
continent;
9.難問
大陸に属する各国の人口が25000000以下である大陸を見つけ、それらの大陸に属する国の名前と大陸と人口を表示。
SELECT
name,continent,population
FROM
world A
WHERE
25000000>=ALL(SELECT population
FROM world B
WHERE B.continent=A.continent);
10.難問
同じ大陸にある他の全ての国よりも3倍は大きな人口の国の、国名と大陸を表示する。
select
name, continent
from
world A
where
population>all(select 3*population
from world B
where B.continent= A.continent
and B.name <> A.name);
その他の答えへ
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
※問題を攻略でき次第、随時更新いたします。
この記事が気に入ったらサポートをしてみませんか?