ろくろ猫のブログ

しがない会社員の備忘log

【SQL練習】【SQLZOO】 4 SELECT within SELECT

4 SELECT within SELECT

f:id:rokuroneko:20210530121716j:plain

問題はこちらです。
SELECT within SELECT Tutorial/ja - SQLZOO


以下が解答となります。

1.ロシアより大きい

【解答】
f:id:rokuroneko:20210606135459p:plain

SELECT name FROM world
  WHERE population >
     (SELECT population FROM world
      WHERE name='Russia');


2.イギリスより豊か

【解答】
f:id:rokuroneko:20210606135755p:plain

SELECT name FROM world
  WHERE continent = 'Europe'
    AND gdp/population > 
        (SELECT gdp/population FROM world WHERE name = 'United Kingdom');


3.アルゼンチンとオーストラリアの近所

【解答】
f:id:rokuroneko:20210606135856p:plain

SELECT name, continent FROM world
  WHERE continent IN (SELECT continent FROM world WHERE name IN ('Argentina','Australia'))
  ORDER BY name;


4.カナダとポーランドの間

【解答】
f:id:rokuroneko:20210606140150p:plain

SELECT name, population FROM world WHERE (population > (SELECT population FROM world WHERE name = 'Canada'))
AND (population < (SELECT population FROM world WHERE name = 'Poland'));


5.ドイツのパーセント

【解答】
①:CONCAT関数を使用すると、何故か小数点以下の数値も表示されて正解できない

f:id:rokuroneko:20210606140356p:plain

■ 2021.6.18 追記
f:id:rokuroneko:20210618194548p:plain

SELECT name, 
CONCAT(ROUND(population / (SELECT population FROM world WHERE name = 'Germany') * 100, 0), '%') 
FROM world 
WHERE continent = 'Europe';


6.ヨーロッパで最大の国

【解答】
f:id:rokuroneko:20210606140643p:plain

SELECT name FROM world WHERE gdp >
(SELECT MAX(gdp) FROM world WHERE continent = 'Europe' GROUP BY continent);


7.各大陸で最大

【解答】
f:id:rokuroneko:20210606140809p:plain

SELECT continent, name, area FROM world WHERE area IN
(SELECT MAX(area) FROM world GROUP BY continent);


8.各大陸で先頭の国(アルファベット順)

【解答】
f:id:rokuroneko:20210606143915p:plain

SELECT continent, MIN(name) FROM world GROUP BY continent;


9.難問。まだ説明していないテクニックを使う。

【解答】
f:id:rokuroneko:20210606143505p:plain

SELECT name, continent, population
FROM world x
WHERE 25000000 >= 
ALL(SELECT population FROM world y 
WHERE x.continent=y.continent);


10.難問。まだ説明していないテクニックを使う。

【解答】
f:id:rokuroneko:20210606143808p:plain

SELECT name, continent 
FROM world x
WHERE population > 
ALL(SELECT 3 * population FROM world y
WHERE y.continent= x.continent
AND y.name <> x.name);