本記事のゴール
この記事は分析を全く知らない方向けにSQLをかける人を増やすという目的で、執筆していきたいと思います。
<こんな方にオススメ>
・自分で施策の検証までやって高速でPDCAを回したいビジネス職の方
・分析人材を育てる際のとっかっかりとしての教材が欲しい方
SQLとは?
SQLとはユーザーの登録日や性別などの情報が入っているデータベース上の情報を操作するための言語です。
データベースのなかには、数万・数百万件ものデータが保存されていますが、SQLを使うことで効率的に操作をすることができます。
さっそく書いてみる
実際に進めていく中で用語、関数を覚えられるようにしたいと思います。
ステップ1:
SQL実行環境の用意
(→実際にSQlが叩ける環境にある場合、代用ツールがある場合は飛ばしてもらって大丈夫です)
ステップ2:
SQL作成&データの抽出
ステップ1:SQL実行環境の用意
まずはデータベースからデータを抽出するためSQLを実行する環境を用意する必要があります。
今回は、SQL fiddleという登録不要でSQLの実行環境が作れるWEBサービスを使って練習していきます。(めちゃくちゃ簡単です!)
1-1:SQL fiddleへ移動
SQL fiddle
http://sqlfiddle.com/
1-2:テーブルの作成
SQL Fiddleの「Text to DDL」というボタンを押すと、テーブル情報を打ち込む画面が表示されます。
テキストウィンドウに下記の「コピペ用」の文字列をペーストして、「Append to DDL」を押して、テーブルを作成します。
コピペ用
id | name | dt | sex
1 | takuya | 2017-10-01 00:00:00 | male
2 | fumi | 2018-04-01 00:00:00 | female
3 | ayaka | 2018-10-01 00:00:00 | female
4 | yota | 2018-10-23 00:00:00 | male
5 | shinya | 2018-11-02 00:00:00 | male
6 | miku | 2019-01-01 00:00:00 | female
7 | toshiki | 2019-03-10 00:00:00 | male
上記を実行すると以下のようなデータを持ったTable1が出来上がります
Table1
ここで用語の説明をしておきます。
id:ユーザーがアプリに登録する際に付与されるidのこと
name:ユーザーの名前
dt:登録日時
sex:性別
※カラム名は今回仮りで付けてあります
テーブル:
情報をまとめた一つの表のようなものです。
今回のサンプルではユーザーの名前や登録日時が格納されているので、ユーザー情報がまとめられたテーブルになります。
カラム:
データベースに入っている縦列の情報群のことを指します。
サンプルではカラム名「id」の中に1~7のidが格納されていることになります。
レコード:
データベースに入っている横列の情報群のことを指します。
SQL作成&データの抽出
SQLを作成して、画面の「RunSQL」をクリックするとデータ抽出が出来ます。
今回は4つほどよく使う文法を使って実際にデータを抽出してみます。
<オススメの学習ステップ>
1周目:
1.SQL文を見てから、どんな処理が走るのか学びます
2.実際に自分でSQLを作成し、実行します
3.正しい数値が抽出されているか確認します
2周目:
1.最終アウトプットを見て、SQL文をイメージ
2.実際にSQLを作成し、実行します
3.正しい数値が抽出されているか確認します
1.シンプルにデータベースに格納されているデータを全て抽出する方法
最終アウトプットイメージ
答え合わせ
SELECT -- SELECTでどんなカラム情報を抜き出すかを指定する
* -- 全ての情報を抜き出す
FROM -- FROMでどのテーブルからデータを抽出するかを指定する
Table1
こちらのSQL文ではTable1というテーブルに格納されているデータを全て抽出するという命令を出しています
2.男性ユーザーのデータだけを抽出する方法
最終アウトプットイメージ
答え合わせ
SELECT
* -- 全ての情報を抜き出す
FROM
Table1
WHERE -- WHEREで条件の指定をする
sex = 'male' -- 性別が男性のデータのみを抽出
こちらのSQL文ではTable1というテーブルに格納されているデータの中でsexカラムに「male」という文字列を含むものを抽出するという命令を出しています
3.2018年に登録をした女性ユーザーのみ抽出する
最終アウトプットイメージ
答え合わせ
SELECT
*
FROM
Table1
WHERE
sex = 'female'
AND dt BETWEEN '2018-01-01' AND '2018-12-31' -- 2018年に登録したユーザーのみ抽出
登録日(dt)が2018年(2018/1/1~2018/12/31)の女性ユーザー(female)のみを抽出しています
4.男性、女性ユーザーのそれぞれの数を抽出する
最終アウトプットイメージ
答え合わせ
SELECT
sex, -- 数を数えるカラム名の指定をする必要がある
count(id) as id_count
-- count:GROUP BYで集約されたidの数を数える
-- as:countした結果を出す際のカラム名の指定ができる
FROM
Table1
GROUP BY -- GROUP BYに指定されたカラム名を基準に同じ値を持つ行を同じグループに分ける
sex -- male、femaleに集約される
GROUP BYで性別(sex)を基点に集約し、男女それぞれのidの数をcount関数で集計しています
もし良かったらこの記事にいいね頂きたいです!
執筆のモチベにして良い記事たくさん書いていきますmm