SQL サブクエリ

SQL

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

皆さんこんにちは。合同会社StudioData代表のRyumaと申します。

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

サブクエリとは

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

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

Math table

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

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

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

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

4行目以下の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を触った際は苦手意識がありましたが、慣れるととても便利な機能ですのでぜひマスターしてください!

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

-SQL
-, ,

© 2024 今すぐ使えるデータサイエンス Powered by AFFINGER5