SQL サブクエリ

SQL データアナリティクス

クエリの中にクエリ!データアナリストがサブクエリを解説

皆さんこんにちは。データアナリストのりゅうです。

今回はSQLで使える「サブクエリ」について解説します。

サブクエリとは

サブクエリとは、クエリの中に別のクエリを作ることです。

それだけ聞いてもよく分からないと思いますので、以下の例を使って解説します。

Math table

このテーブルをstudentsテーブルと名付け、ここから「MikeよりもMathの点数が高い生徒のデータを取得する」という命令を出すとします。

その際、「MikeのMathの点数を取得する」という工程と、「取得したMikeの点数よりも高い生徒のデータを取得する」という工程の2つに分かれます。

このような時にサブクエリがとても役に立つのです。実際に以下で書いてみます。

SELECT
  *
FROM
  students
WHERE
  Score > (
  SELECT
    Score
  FROM
    students
  WHERE
    name = "Mike"
)

5行目以下のWHERE句の箇所で()の中にもう一度SELECTから始める別のクエリがあるのが分かります。

SELECT
Score
FROM
students
WHERE
name = "Mike"

()の中のクエリだけ取り出したものがこちらで、「MikeのScoreを取得」という非常にシンプルなものになっています。

これが先に実行されることで全体のクエリは下記のようなイメージになります。

SELECT
*
FROM
students
WHERE
Score > MikeのScore

その結果、ちゃんとMikeの点数よりも高い生徒が取得されます。

ポイント

クエリの実行順番はサブクエリ→外側のクエリ

サブクエリで集計関数を使ってみる

次に、MathのScoreが平均よりも高い生徒を取得してみます。

その際は下記のようなサブクエリを使うとうまくいきます。

SELECT
  *
FROM
  students
WHERE
  Score > (
  SELECT
    AVG(Score)
  FROM
    students
)

サブクエリの中で「Scoreの平均点」を一度取得し、外側のクエリのWHERE句で「取得した平均点よりもScoreが大きい」という条件にすることができます。

サブクエリまとめ

今回はクエリの中にクエリを作る、サブクエリについて解説しました。

サブクエリはちょっぴり複雑なクエリを書く行為ではありますが、その分頭の整理や持っているデータを整理するのにとても役に立ちます。

僕も最初は苦手意識がありましたが、慣れるととても便利な機能ですのでぜひマスターしてください!

最後まで読んでいただきありがとうございました!

-SQL, データアナリティクス
-, ,

© 2024 Ryu'sHelloWorld Powered by AFFINGER5