Atsushi2022の日記

データエンジニアリングに関連する記事を投稿してます

SQL Zooを試してみた ~ SELECT in SELECTとJOIN

概要

SQLZOOは手を動かしながらSQLを無料で学べるサイト。

SQL ZooのSELECT in SELECTJOINセクションにトライして、知らなかった点をメモしておく。

SELECT in SELECT

6. Bigger than every country in Europe

ALL句

キーワード ALL で大小記号 >=><<= をリストの全ての要素に対して適用できる。

SELECT name
  FROM world
 WHERE gdp > ALL(SELECT gdp
                FROM world
                WHERE gdp > 0
                AND continent = 'Europe')

9. Difficult Questions That Utilize Techniques Not Covered In Prior Sections

これは難しかった。。。

大陸に属する各国の人口が全て25000000以下である大陸を見つけ、それらの大陸に属する国の名前と大陸と人口を表示。

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

JOIN

11. ポーランド(POL)が参戦している全試合の matchid と 日程 とその試合のゴール数 を表示する。

GROUP BYでまとめる列以外のすべての列に対して、集合関数を使用すること。 でないと、エラーになる。

SELECT matchid, MIN(mdate), COUNT(*) FROM game 
JOIN goal ON (game.id = goal.matchid) 
WHERE (team1 = 'POL' OR team2 = 'POL') GROUP BY goal.matchid

13.

わからなかったので、また今度トライしてみる。。。。