第3回までは、BigQueryの設定とデータのアップロード・連携方法についてご紹介してきました。
今回は、データから必要な情報を抽出するためのSQLの基本をご紹介していきます。
SQL文とは?
SQLとは、大量のデータのデータから、ある条件のデータを選び出したり、データの追加や削除を行う命令を出す言語です。
SQLの基本となる命令文は、下記の4つだけです!
この4つの命令文を使用することで、必要な情報を抽出していくことになります。
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>
FROMの後ろには、データを取り出す元となるテーブルを指定します。
BigQueryでは、テーブルの指定は、「データセット名.(ドット)テーブル名」となります。※記述の末尾には、SQL分がそこで終了したことを示す「;(セミコロン)」を記述するようにしてください。
では、SELECT文を実際に見ていきます。
1つの列を取得
●命令文
SELECT name FROM Employee_list.Employee_list;
実際に、BigQueryにクエリの記載を行ってみました。
クエリに間違いがある場合は、下記のように右上にエラーが表示されます。
クエリに問題がない場合は、このクエリを実行することでどれだけのデータが処理されるかの記載が右上に表示されます。
クエリの実行には、画面上部にある「実行」ボタンを押すと、データの処理が開始されます。
●実行結果
「,」で複数列取得
●命令文
SELECT name , area FROM Employee_list.Employee_list;
※複数列を取得する場合には、SELECTの後ろに取得したい順番にカンマで区切って記載
●実行結果
「*(アスタリスク)」で全カラム取得
取得したい要素の項目に「*(アスタリスク)」を入れることで、全ての要素を取得することが可能です。
*を利用して全カラムを取得すると、一部のカラムを指定した場合に比べてクエリ量が増えるためBigQueryの費用(クエリに対する費用)が増加することになります。
●命令文
SELECT * FROM Employee_list.Employee_list;
●実行結果
「SELECT * EXCEPT(除外したい列) FROM」で特定の列を除外
FROMの前に「EXCEPT(除外したい列)」を入れることで、指定した列を除外することが可能です。
複数の列を指定する際は、「,」で区切って指定を行います。
▶1つの列を除外
●命令文
SELECT * EXCEPT(age) FROM Employee_list.Employee_list;
●実行結果
▶複数の列を除外
●命令文
SELECT * EXCEPT(age,area) FROM Employee_list.Employee_list;
●実行結果
「WHERE」で条件を絞り込み
SELECT文の後ろにWHERE [条件文]を追加することで、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つの条件(算術演算子)で絞り込み
●命令文
SELECT name FROM Employee_list.Employee_list where gender=’男’;
●実行結果
▶複数の条件で絞り込み
論理演算子を使用したSQLをご紹介いたします。
●命令文
SELECT name FROM Employee_list.Employee_list where gender=’男’ AND age>30;
●実行結果
比較演算子を使用したSQLをご紹介いたします。
●命令文
SELECT name,age FROM Employee_list.Employee_list where age between 30 AND 50;
「GROUP BY」でグループわけ
グループ分けをしたい場合に使用するのが「GROUP BY」です。
●命令文
SELECT area FROM Employee_list.Employee_list GROUP BY area;
●実行結果
「ORDER BY」でソート
「ORDER BY」で並べ替えることができます。
並べ替えの順番は、ASC(昇順)、DESC(降順)のどちらかで指定することができます。
何も指定しなければ、ASC(昇順)となります。
DESC・・・降順・大きい方から小さい方への並べ替え
※ASC・・・ascending(「登っていく、上昇的な」という意味)
※DESC・・・descending(「下っていく、加工的な」という意味)
●命令文
SELECT name,age FROM Employee_list.Employee_list ORDER BY age DESC;
●実行結果
SQL構文の並び順
ここまで色々な構文をみてきましたが、SQLには並べる順番が決まっています。
SQLを書く際には、意識するようにしてください。
まとめ
今回ご紹介したSELECT文を使用することで、データの抽出をすることが可能になります。
次回は、データの更新や削除といった、データをメンテナンスする命令文「INSERT文」「UPDATE文」「DELETE文」についてご紹介いたします。