第3回までは、BigQueryの設定とデータのアップロード・連携方法についてご紹介してきました。
今回は、データから必要な情報を抽出するためのSQLの基本をご紹介していきます。
SQL文とは?
SQLとは、大量のデータのデータから、ある条件のデータを選び出したり、データの追加や削除を行う命令を出す言語です。
SQLの基本となる命令文は、下記の4つだけです!
この4つの命令文を使用することで、必要な情報を抽出していくことになります。
SELECT文 → データを取得する命令
INSERT文 → データを追加する命令
UPDATE文 → データを追加する命令
DELETE文 → データを削除する命令
今回は、この4つの基本命令文のうちの「SELECT文」についてご紹介していきます。
練習用テーブル
今回の記事の例題で使用するテーブルとなります。
ある会社の従業員のデータとなっており、テーブル名は「Employee_list」です。
●従業員名簿(Employee_list)
社員名 , name | 住所 , area | 性別 , gender | 年齢 , age | 交通費 , expenses |
---|---|---|---|---|
山田 | 大阪 | 男 | 45 | 1,360 |
前田 | 京都 | 男 | 26 | 1,820 |
大林 | 兵庫 | 男 | 35 | 1,480 |
中村 | 奈良 | 女 | 32 | 1,640 |
佐々木 | 大阪 | 女 | 56 | 720 |
小松 | 大阪 | 男 | 28 | 900 |
長崎 | 滋賀 | 男 | 48 | 2,680 |
SELECT文/データの取得
SELECT文は、データから必要な情報を取得するための命令文です。
基本構文は下記となります。
SELECT [取り出したい列] FROM [データセット名]. [テーブル名];
※取り出したい列が複数ある場合はカンマでつなぐ
<SELECT>
SELECTの後ろには、取り出したい列を指定します。
複数列を取得する場合には、取得したい順番にカンマでつなぎ記述します。
では、SELECT文を実際に見ていきます。
1つの列を取得
例題1:
「練習用テーブル/従業員名簿」から社員名を抜き出せ。
●命令文
SELECT name FROM Employee_list.Employee_list;
実際に、BigQueryにクエリの記載を行ってみました。
クエリに間違いがある場合は、下記のように右上にエラーが表示されます。
クエリに問題がない場合は、このクエリを実行することでどれだけのデータが処理されるかの記載が右上に表示されます。
クエリの実行には、画面上部にある「実行」ボタンを押すと、データの処理が開始されます。
●実行結果
「,」で複数列取得
例題2:
「練習用テーブル/従業員名簿」から社員名と出身地域を抜き出せ。
●命令文
SELECT name , area FROM Employee_list.Employee_list;
※複数列を取得する場合には、SELECTの後ろに取得したい順番にカンマで区切って記載
●実行結果
「*(アスタリスク)」で全カラム取得
取得したい要素の項目に「*(アスタリスク)」を入れることで、全ての要素を取得することが可能です。
*を利用して全カラムを取得すると、一部のカラムを指定した場合に比べてクエリ量が増えるためBigQueryの費用(クエリに対する費用)が増加することになります。
例題3:
「練習用テーブル/従業員名簿」のテーブルデータを全て抜き出せ。
●命令文
SELECT * FROM Employee_list.Employee_list;
●実行結果
「SELECT * EXCEPT(除外したい列) FROM」で特定の列を除外
FROMの前に「EXCEPT(除外したい列)」を入れることで、指定した列を除外することが可能です。
複数の列を指定する際は、「,」で区切って指定を行います。
1つの列を除外
例題4:
「練習用テーブル/従業員名簿」から年齢以外のテーブルデータを抜き出せ。
●命令文
SELECT * EXCEPT(age) FROM Employee_list.Employee_list;
●実行結果
複数の列を除外
例題5:
「練習用テーブル/従業員名簿」から年齢と地域以外のテーブルデータを抜き出せ。
●命令文
SELECT * EXCEPT(age,area) FROM Employee_list.Employee_list;
●実行結果
「WHERE」で条件を絞り込み
SELECT文の後ろにWHERE [条件文]を追加することで、データの抽出が可能です。
今回は、算術演算子と論理演算子と比較演算子をご紹介いたします。
算術演算子
算術演算子 | 意味 | 算術演算子 | 意味 |
---|---|---|---|
= | 等しい | != <> | 等しくない |
> | 大きい | >= | 以上 |
< | 小さい | <= | 以下 |
論理演算子
論理演算子 | 意味 |
---|---|
WHERE A AND B | AB2つの条件に一致するデータを抽出 |
WHERE A OR B | ABどちらか一方の条件に一致するデータを抽出 |
WHERE NOT A | Aの条件に一致しないデータを抽出 |
比較演算子
比較演算子 | 意味 |
---|---|
WHERE [比較対象のカラム] between A and B | A~Bの範囲に該当するレコードだけを取得 |
WHERE [比較対象のカラム] not between A and B | A~Bの範囲に該当するレコードを除いて取得 |
WHERE [比較対象のカラム] in(A,B,C) | A,B,Cに該当するレコードだけ取得することができる |
WHERE [比較対象のカラム] not in(A,B,C) | A,B,Cに該当するレコードを除いて取得することができる |
1つの条件(算術演算子)で絞り込み
例題6:
「練習用テーブル/従業員名簿」から男性の名前のテーブルデータを抜き出せ。
●命令文
SELECT name FROM Employee_list.Employee_list WHERE gender=’男’;
●実行結果
複数の条件で絞り込み
論理演算子を使用したSQLをご紹介いたします。
例題7:
「練習用テーブル/従業員名簿」から30歳以上の男性の名前のテーブルデータを抜き出せ。
●命令文
SELECT name FROM Employee_list.Employee_list where gender=’男’ AND age>30;
●実行結果
比較演算子を使用したSQLをご紹介いたします。
例題8:
「練習用テーブル/従業員名簿」から30歳以上50歳以下の男性の名前のテーブルデータを抜き出せ。
●命令文
SELECT name,age FROM Employee_list.Employee_list WHERE age between 30 AND 50;
●実行結果
「GROUP BY」でグループわけ
グループ分けをしたい場合に使用するのが「GROUP BY」です。
GROUP BY [グループ分けする要素]
例題9:
「練習用テーブル/従業員名簿」から地域ごとの交通費を計算しなさい。
●命令文
SELECT area FROM Employee_list.Employee_list GROUP BY area;
●実行結果
「ORDER BY」でソート
「ORDER BY」で並べ替えることができます。
ORDER BY [並べ替える要素] [昇順・降順の指定]
並べ替えの順番は、ASC(昇順)、DESC(降順)のどちらかで指定することができます。
何も指定しなければ、ASC(昇順)となります。
ASC・・・昇順・小さい方から大きい方への並べ替え(デフォルト)
DESC・・・降順・大きい方から小さい方への並べ替え
※ASC・・・ascending(「登っていく、上昇的な」という意味)
※DESC・・・descending(「下っていく、加工的な」という意味)
例題10:
「練習用テーブル/従業員名簿」から名前と年齢を降順で抜き出せ。
●命令文
SELECT name,age FROM Employee_list.Employee_list ORDER BY age DESC;
●実行結果
SQL構文の実行順
ここまで色々な構文をみてきましたが、SQLには実行される順番が決まっています。
FROM → WHERE → GROUP BY → SELECT → ORDER BY
WHERE句では、グループ化する前のデータの絞り込みのみを行うことができます。
なお、グループ化したあとのデータの絞り込みには、HAVING句を使用します。
まとめ
今回ご紹介したSELECT文を使用することで、データの抽出をすることが可能になります。
次回は、データの更新や削除といった、データをメンテナンスする命令文「INSERT文」「UPDATE文」「DELETE文」についてご紹介いたします。
ウェブ広告をはじめ、ウェブマーケティングに関する不安や疑問を無料でスッキリ解決しませんか?
当社では、事業会社様向けにデジタルマーケティングについてのお悩み、貴社の課題に
対して専任のコンサルタントによる無料の個別相談会を毎週金曜に定期開催しております。
運用型広告に関するお悩みごとだけでなく、マーケティングから技術的なことまでお気軽にご相談ください。