Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@pomuboy

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

本記事のゴール

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

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
pomuboy
IT企業でアナリストとしてお仕事をしています。SQL、Rについての記事が多くなります。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?