LoginSignup
6

More than 1 year has passed since last update.

【30分で分かる】SQL初心者のための超入門講座

Last updated at Posted at 2019-03-13

本記事のゴール

この記事は分析を全く知らない方向けに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/

上記のURLで飛ぶと以下のような画面が表示されます。
スクリーンショット 2019-03-10 午後4.27.27.png

1-2:テーブルの作成

スクリーンショット 2019-03-10 午後4.27.27.png
SQL Fiddleの「Text to DDL」というボタンを押すと、テーブル情報を打ち込む画面が表示されます。
スクリーンショット 2019-03-10 午後5.20.41.png

テキストウィンドウに下記の「コピペ用」の文字列をペーストして、「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

スクリーンショット 2019-03-10 午後5.37.17.png

ここで用語の説明をしておきます。
スクリーンショット 2019-03-10 午後6.15.46.png
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.シンプルにデータベースに格納されているデータを全て抽出する方法

最終アウトプットイメージ

スクリーンショット 2019-03-10 午後6.22.46.png

答え合わせ

SELECT -- SELECTでどんなカラム情報を抜き出すかを指定する
 *     -- 全ての情報を抜き出す
FROM   -- FROMでどのテーブルからデータを抽出するかを指定する
 Table1

こちらのSQL文ではTable1というテーブルに格納されているデータを全て抽出するという命令を出しています

2.男性ユーザーのデータだけを抽出する方法

最終アウトプットイメージ

スクリーンショット 2019-03-10 午後6.47.40.png

答え合わせ

SELECT
 * -- 全ての情報を抜き出す
FROM
 Table1
WHERE -- WHEREで条件の指定をする
 sex = 'male' -- 性別が男性のデータのみを抽出

こちらのSQL文ではTable1というテーブルに格納されているデータの中でsexカラムに「male」という文字列を含むものを抽出するという命令を出しています

3.2018年に登録をした女性ユーザーのみ抽出する

最終アウトプットイメージ

スクリーンショット 2019-03-10 午後7.02.36.png

答え合わせ

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.男性、女性ユーザーのそれぞれの数を抽出する

最終アウトプットイメージ

スクリーンショット 2019-03-10 午後7.15.52.png

答え合わせ

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6