【SQL】サブクエリはWTIH句が最強。可読性こそ現場での正義。|sampling2xsampling2xSQL【SQL】サブクエリはWTIH句が最強。可読性こそ現場での正義。【SQL練習】サンプルデータベースを用意するでMySQL公式のデータベースをローカルに作成されている方には特におすすめです。本記事の目的サブクエリとは何か理解する。WITH句を使って可読性の高いサブクエリを作れるようになる!そもそも「サブクエリ」とは?完結に説明すると、クエリの中にクエリを作ることです。クエリの中にクエリを作ることでより複雑なデータを取得することができます。言葉だけではイメージが湧かないと思うので、以下が具体例になります。使用テーブルはpaymentテーブルとcustomerテーブルです。■paymentテーブル■customerテーブルではこの2つのテーブルを使って、「決済額の合計金額がTOP5のお客様のメールアドレスを取得したい」場合、どのように書けばよいのでしょうー?WITH句を使わず、普通にサブクエリを使って書くと以下のように書けると思います。■JOINするテーブルをサブクエリを使って、合計決済額TOP5のみのテーブルにする(top_five_amount)すごく見にくいです。JOINの中に新たにサブクエリを使って条件を付け加えています。次からWITH句を使えばどのようにサブクエリが書けるか見ていきます。ちょー簡単で、可読性がめちゃくちゃ上がります!【SQL】サブクエリはWTIH句が最強ではここからWTIH句について解説していきます。WITH句を使えば「クエリ内に新たにテーブルを作る」ことができます。サブクエリ自体もクエリの中にクエリを書くので、非常に似ているのですが、WITH句で書くとそのテーブル内で何度でも使い回すことができる点が大きく違います。as(作成したいテーブルを作るクエリ);では先ほどと同じ「決済額の合計金額がTOP5のお客様のメールアドレスを取得したい」場合はWITH句だと以下のように書けます。結果はもちろん同じです。このWITH句ではWITH以下で新たにget_top5_amount_idテーブルを作っています。どんなテーブルかと言いますと、たった5レコード&2カラムの以下のテーブルになります。お気づきだと思いますが、上記の結果はWTIH句内の青く囲った部分の抽出結果になります。赤色で囲った部分でWITH句で作成したテーブルを使っています。先ほどのサブクエリと比べて非常にわかりやすいですよね。冒頭でWITH句のメリットとして述べたように、WITH句で書くとそのテーブル内で何度でも使い回すことができる点が大きく違います。新たなクエリを作りたいと思います。新たにget_emailテーブルを作っています。これは普通のサブクエリではできず、WITH句の非常に便利な機能の一つです。as(作成したいテーブルを作るクエリ);サブクエリと違って、可読性が非常に高く他者に共有しやすい。WITH句内で作ったテーブルはクエリ内で何度も使用できる。Shogo某Web系企業でアクセス解析やKPI管理をやってます。Shogosampling2xSQL【SQL】COALESCE()関数を使って、NULLを0に置き換える。ShogoProfile某Web系企業でwebマーケとデータ分析をやってます。PMやインハウスマーケターに向けて、情報発信していきます。in~4【SQL】サブクエリはWTIH句が最強。可読性こそ現場での正義。5【簡単】MySQL公式サンプルデータでSQLの練習環境を作る。書評アーカイブ2019年12月2019年9月2019年8月2019年7月2019年6月2019年3月2019年2月2019年1月2018年10月2018年9月HOMEデータ分析SQL【SQL】サブクエリはWTIH句が最強。可読性こそ現場での正義。sampling2x。