WHERE- サブクエリはどこに書く?

SQL のデータ操作

Mona Khalil

Data Scientist, Greenhouse Software

サブクエリとは?

  • 別のクエリ内に ネストされた クエリ
SELECT column
FROM (SELECT column
      FROM table) AS subquery;
  • データの中間的な変換に役立つ
SQL のデータ操作

サブクエリの使い方

  • クエリのあらゆる句に追加可能

    • SELECT, FROM, WHERE, GROUP BY
  • さまざまな情報を返す

    • スカラー値 (3.14159, -2, 0.001)
    • リスト(id = (12, 25, 392, 401, 939)
    • テーブル
SQL のデータ操作

サブクエリを使う理由は?

  • グループごとの値を集約した値と比較
    • ある年のリバプールの成績は、プレミアリーグの平均と比較してどうだったか?- データの整形
    • ブンデスリーガの月間平均得点数の最高値は?- 結合できないデータを組み合わせる
    • どうしたら、試合結果のテーブルにホームチームとアウェイチームの両方の名前を入れられるか?
SQL のデータ操作

単純サブクエリ

  • 外側のクエリとは独立して評価可能
SELECT home_goal
FROM match
WHERE home_goal > (
    SELECT AVG(home_goal) 
    FROM match);

SELECT AVG(home_goal) FROM match;
1.56091291478423
SQL のデータ操作

単純サブクエリ

  • クエリ全体で 1 回だけ実行
SELECT home_goal
FROM match
WHERE home_goal > (
    SELECT AVG(home_goal) 
    FROM match);
SQL のデータ操作

WHERE 句内のサブクエリ

  • 2012/2013 シーズンに、ホームでの得点数が全体平均を上回った試合はどれ?
SELECT AVG(home_goal) FROM match;
1.56091291478423
SELECT date, hometeam_id, awayteam_id, home_goal, away_goal
FROM match
WHERE season = '2012/2013'
      AND home_goal > 1.56091291478423;
SQL のデータ操作

WHERE 句内のサブクエリ

  • 2012/2013 シーズンに、ホームでの得点数が全体平均を上回った試合はどれ?`SQL

SELECT date, hometeam_id, awayteam_id, home_goal, away_goal FROM match WHERE season = '2012/2013' AND home_goal > (SELECT AVG(home_goal) FROM match);


----CODE_GLUE----
```out

| date       | hometeam_id | awayteam_id | home_goal | away_goal |
|------------|-------------|-------------|-----------|-----------|
| 2012-07-28 | 9998        | 1773        | 5         | 2         |
| 2012-07-29 | 9987        | 9984        | 3         | 3         |
| 2012-10-05 | 9993        | 9991        | 2         | 2         |
SQL のデータ操作

サブクエリで IN を使ってリストをフィルタリング

  • ポーランドのリーグに所属するチームはどれ?`SQL

SELECT team_long_name, team_short_name AS abbr FROM team WHERE team_api_id IN (SELECT hometeam_id FROM match WHERE country_id = 15722);

| team_long_name | abbr |
|----------------|------|
| Ruch Chorzów   | CHO  |
| Jagiellonia    | BIA  |
| Lech Poznań    | POZ  |
| P. Warszawa    | PWA  |
| Cracovia       | CKR  |
| Górnik Łęczna  | LEC  |
| Polonia Bytom  | GOR  |
| Zagłębie Lubin | ZAG  |
| Pogoń Szczecin | POG  |
| Widzew Łódź    | WID  |
| Śląsk Wrocław  | SLA  |
SQL のデータ操作

練習しましょう!

SQL のデータ操作

Preparing Video For Download...