ALL ARTICLES FILED IN

Tech Blog

[SQL]マーケターのためのSQL入門3 ー データを抽出、グループ化する

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

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

前回はINNER JOINを使って複数テーブルを結合するクエリについてご説明しました。

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

今回は前回のデータを元にして、データの抽出やグループ化についてお話しいたします。
環境は前回同様にRedashをフロントエンドとして、PostgreSQLチュートリアルのサンプルデータを使用します。

Redashの環境構築に興味がある方は過去の記事をご参照ください。

まず、前回のクエリをもう一度見てみましょう。


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);

このSQLを実行すると以下の結果が得られます。

では、WHERE句を使って、条件を指定してみます。


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 = 'Mary';

Maryさん一人だけが抽出されました。

次は、WHERE句を少しいじって、'='の代わりに'LIKE'を使ってファーストネームが'M'から始まる人を全員抽出してみます。'M'の後の'%'はワイルドカードといって、'M'の後は任意の文字列が一致します。


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 'M%';


'LIKE'の後を'%ie'とすると以下のようにファーストネームが'ie'で終わる人が出力されます。


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';

次は、同じ条件を持つレコードをグループ化してみます。下の例では、ファーストネームが同じ人の数をカウントしています。


SELECT
count(*) as count,
c.first_name as 名前
FROM customer AS c
GROUP BY c.first_name
ORDER BY count DESC;

レコードをグループ化するためには、GROUP BY句を使います。レコードをグループ化しているので、表示できないデータは取り出せなくなります。


SELECT
count(*) as count,
c.first_name as 名前,
actor.last_name as 苗字
FROM customer AS c
GROUP BY c.first_name
ORDER BY count DESC;

この場合、ファーストネームでグループ化しているので、苗字を表示しようと思ってもエラーになります。そのため、グループ化したファーストネームとデータ件数であるcount(*)のみを取り出しています。
また、ORDER BYで整列しています。デフォルトでは昇順(ASC)ですが、ここでは降順(DESC)にして大きい順に表示しています。

今回は、レコードを抽出する条件の指定とグループ化についてご説明しました。今後はまた、より進んだSQLの使い方について触れていきます。

 

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

お問い合わせはこちら

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