ALL ARTICLES FILED IN

Tech Blog

[SQL]マーケターのためのSQL入門4 ー サブクエリを使う

Posted by デジマール技術部 on 2018/09/17
デジマール技術部

この記事は主にマーケターの方を対象に、SQLを使ったデータ解析の基本的なテクニックについてご説明いたします。

前回はレコードを抽出する条件の指定とグループ化についてご説明しました。

前回の記事
https://blog.digimarl.com/techblog/sql_basic_select_statement2

今回は、WITHを使ったサブクエリの使い方についてみていきます。

SQLは複数のテーブルを扱ったり複雑な条件を加えたりすることができますが、指定する項目が増えると一気に読みにくくなってしまいます。特に分析系のSQLはその傾向が強いと言えます。
WITH句を使うことで、SQLをシンプルに保ったままで複雑な条件式を加えることができます。また、共通SQLとしてWITHの出力を他のSELECT文で使いまわすこともできます。

WITH句は以下のような書き方になります。

WITH c AS (
SELECT first_name AS 名前,
last_name AS 苗字,
email AS メールアドレス FROM customer
WHERE first_name LIKE '%ie'
)

SELECT * from c;

このSQL文はWITH句で引っ張ってきたデータをそのまま出力しているだけなので意味はありませんが、書き方としてはこのようになります。

では、次にこちらのSQLをみてください。


SELECT c.first_name AS 名前,
c.last_name AS 苗字,
c.email AS メールアドレス,
a.address AS 住所
FROM (customer AS c
INNER JOIN address AS a ON c.address_id = a.address_id)
WHERE c.first_name LIKE '%ie';

ファーストネームが'ie'で終わる顧客の名前と苗字、メールアドレス、住所を取得しています。
こちらのSQL文をWITH句を使って書くと以下のようになります。


WITH c AS (
SELECT first_name AS 名前,
last_name AS 苗字,
email AS メールアドレス,
address_id
FROM customer
WHERE first_name LIKE '%ie'
)

SELECT c.*, a.address as 住所 from c, address as a
WHERE c.address_id = a.address_id;

数十行にも及ぶようなクエリを実行する場合などは特に、WITH句を使うことで見通しが良くなるためにミスも軽減できます。

今回は、WITH句を使ったサブクエリの書き方についてご説明しました。今後もSQLのより進んだ使い方についてご紹介していきたいと思います。

 

———-
弊社では、マーケターがRedashをフロントに置いたデータ解析環境を構築するお手伝いもしております。
またRedashだけでなく、社内データの利活用やデジタルマーケティング全般に関するご相談も、お気軽に以下よりお問い合わせください。

お問い合わせはこちら

Topics: sql, Redash, 技術情報, マーケター