ビジネスサイドが KARTE Datahub を用いて学ぶ、初めての SQL

商社の営業職から PLAID のビジネスサイド に転身して 8 ヶ月が経った @tomoyomiyano です。最近はボードゲーム、特に[パンデミック](https://www.amazon.co.jp/%E3%83%91%E3%83%B3%E3%83%87%E3%83%9F%E3%83%83%E3%82%AF-%E6%96%B0%E3%81%9F%E3%81%AA%E3%82%8B%E8%A9%A6%E7%B7%B4-Pandemic-%E6%97%A5%E6%9C%AC%E8%AA%9E%E7%89%88-%E3%83%9C%E3%83%BC%E3%83%89%E3%82%B2%E3%83%BC%E3%83%A0/dp/B00DKSX2TK)にドハマリしています。地球救いたい。

[PLAID Advent Calendar 13 日目](https://qiita.com/advent-calendar/2018/plaid) の今回は、PLAID 社内でビジネスサイド向けに開かれた SQL 勉強会についてお送りします。

# はじめに

私の普段の業務は PLAID のビジネスサイドとしてクライアント対応がメインとなっており、特段エンジニアリングの知識を持ち合わせていません。そのため、今までもSQLを学ぶ喫緊の必要性は感じたことがなく、**「いつか学べたらいいな」**くらいに思っていました。

しかし、弊社プロダクトで非エンジニアでも SQL を書けると出来ることが広がる機能がリリースされ、非エンジニアの私も SQL を書けるようになることで（何かわからないけれど、）**何か出来ることがあるんじゃないか**と思い勉強会に参加することにしました。



そんな私の SQL における前提知識は、

 - 書くと欲しいデータがもらえる
 - 参照元も結果も行と列のデータ

程度のものでした。
はい、そこのエンジニアの方笑わない。
 
# 想定読者

- SQL を学ぶと何ができるかわからない方
- SQL を学びたいと思ってもきっかけのなかった方
- 初めて SQL に触れた非エンジニアの感想が気になるエンジニアの方


# なぜ勉強会が開催されたのか
前段でも触れましたが、一言で言うと**「SQL を書けると出来ることが広がる、自社プロダクトがリリースされたから！」** です。

弊社プロダクト [CX（顧客体験）プラットフォーム KARTE](https://karte.io/) では、Web サイトおよびアプリ上に来るユーザーの行動を顧客軸でリアルタイムに解析・可視化し、そこから一人ひとりに合わせたアクションを通じて CX の向上を可能にします。

さらに 2018 年 12 月にリリースした [KARTE Datahub](https://karte.io/product/datahub/) の機能を用いると、社内外のオフラインデータなど、分断されている様々なデータベースを統合し、あらゆるチャネル・タッチポイントを通じてワンストップで最適な CX の実現が可能になります。
しかし、このデータの統合や活用には SQL の知識が必須です。

KARTE 単体では非エンジニアでも管理画面から様々な CX 向上ストーリーを実現できるため、私含め多くのビジネスサイドのメンバーがコードを書かずして運用していますが、 [KARTE Datahub](https://karte.io/product/datahub/) で外部データの繋ぎ込みをビジネスサイドもできるようになると、今まで実現できなかったオフラインデータを利用した CX の実現も可能になります。

そこで今回は、実際に [KARTE Datahub](https://karte.io/product/datahub/) を用いて、社内ビジネスサイド向けの勉強会が開催されました。


# 勉強会内容

勉強会は大きく分けると下記の3部構成で開催されました。

(0. はじめに）
1. SQL の仕組み
2. SQL の基本構文
3. 結合・集計・関数

SQLの勉強をする方は、終わりに記載している本などを用いて実践的に学ぶと思います。
そのためここでは、学んでいく中でどのように感じ、理解していったのかを記します。

### 0. はじめに

 [KARTE Datahub](https://karte.io/product/datahub/) を使って SQL を書くとできる事例をいくつか紹介してもらいました。

- 実店舗での購入と自社サイトでの購入の相関関係をみる
- 実店舗でもWebサイトでも購入する人の傾向をみる
- 過去の購入データをもとにした商品の訴求をする

Web で取り得ないオフラインの行動データや、 KARTEの導入前の顧客データをキーにユーザー解析を行えるので、未来が広がるなと改めて感じました。とはいえ SQL が書けないことにはエンジニアの助けがないと思いついた施策の実行ができません。


### 1. SQL の仕組み

#### そもそもSQLとは何の略なのか

 - SQLは「Structured Query Language」の頭文字をとった、リレーショナルデータベースと呼ばれる表形式のデータベースを操作するための標準化されたプログラミング言語

つまりは**行と列のデータを扱う**。ここまでは認識とずれなく問題なさそうです。

また、この行と列でできた個々の表をテーブルといい、各テーブルには名前がついています。
これもExcelのシートのようなものだなと理解しました。

#### データには型がある
データには「型」と呼ばれるデータの種類があり、文字列であれば VARCHAR、整数であれば　INTEGER、日付は　DATE　と呼ばれる「型」で記載します。データは、列ごとに同じ型で入っています。

データの型は、Javascript　を学んだ時に初めに躓いたポイントでもあります。型に関しては、理解して書くのではなく、何度も実際のコードを書きながら後から理解が追いついてくるといった学び方が早いなと実感しています。




### 2. SQL の基本構文

SQL　の種類は大きく分けて4つ。

- データの参照（SELECT）
- データの挿入（INSERT）
- データの更新（UPDATE）
- データの削除（DELETE）

非エンジニアはデータを用いた分析やそのための抽出に SQL を使うので、基本的には SELECT さえ覚えれば大丈夫。
このように一つでいいと言われると、一気に心理的ハードルが下がりました。

この後簡単な SQL 文をいくつか書いて実際にデータを抽出したのですが、思い描いたことを自分の手で実現できるのは純粋にとても楽しかったです。



### 3. 結合・集計・関数

SQL の基本構文を理解できれば、すべての操作は可能とのことでしたが、さらにデータ分析を行うには下記のような手法を駆使する必要があるそうです。

- 結合：複数テーブルのデータを同時に参照するための方法
- 集計：カウント、合計、平均など複数行にまたがる演算処理を行うための方法
- 関数：よく利用する処理が予め定義されたもの

今回の勉強会では、時間も限られていたため結合に限り少し触れました。

結合は、複数のテーブルを繋ぎ合わせてデータ参照をする方法です。
結合のキーにする列を決めてデータを繋ぎ込むのですが、繋ぎ込み条件に合わせて2種類あります。

- INNER JOIN：両方に値が存在する行のみを結合する。どちらかに値が存在しない行は参照結果のテーブルにでてこない。
- OUTER JOIN：INNER JOINの内容の行に加え、軸テーブルにのみ存在する行を結合する。軸テーブルに値がある行は参照結果のテーブルに必ず表示される。

**、、、難しい！**
とはいえ理解に時間を使う暇があったら真似してでもコードを書いたほうが良いと思い、いくつか問題を解いてみました。
INNER JOIN はどちらにも値があるものとまだわかりやすいのですが、OUTER JOIN はどのテーブルを軸テーブルとするべきなのか、その際の表現方法は何かの理解にまで追いつきませんでした。これは懲りずに勉強し続けないといけませんね。



# 勉強会前後の変化

[KARTE Datahub](https://karte.io/product/datahub/) には、クエリコレクションと呼ばれる汎用的なクエリを既に用意している分析方法のナレッジデータベースがあります。SQL を理解していくことで、ここに書かれているコードの読み方がわかったり、さらに自分の使いたい形に応用したりできるんじゃないかとわくわくしています。

また、机上で仕組みを理解するよりとにかく真似して書いてみると理解が早いと改めて実感しました。頭ではわかっていても、きっかけがないとつい普段の業務に紛れて学ぶ機会が先延ばしになってしまいます。。。さらに、コードを書く環境も非エンジニアからすると「どのアプリにこの言葉を書けばいいのか？」からスタートしてしまいます。

勉強会等を通じて実際に手を動かしてみるきっかけがあると、つべこべ言わずまずは手を動かしてみようという気持ちになりました。がんばるぞ。

# SQL を学ぶのにおすすめ本

勉強会をきっかけにし、SQL 超初心者の私が楽しく学べている SQL の本をご紹介します。
　[「スッキリわかるSQL入門 ドリル215問付き！」中山清喬/飯田理恵子・著](https://book.impress.co.jp/books/1111101167) 
こちらの本はただ SQL の知識を得るのではなく、クラウド実行環境で実際に SQL を書いて手を動かしながら学べます。つい先日[第 2 版](https://book.impress.co.jp/books/1118101071) も発売されたようです。
第一章から問題が多く載っていて理解をする前から手を動かさざるを得ないため、楽しく実践的に学べます。どこに書けば良いのか、クラウド環境が既に用意されているのもありがたいです。


（来年の Advent Calendar では**「ビジネスサイドの私が KARTE Datahub で SQL を使いこなしている話」**という題名で書きたいものです。）

# おわりに
PLAIDでは、 [KARTE Datahub](https://karte.io/product/datahub/) をご利用いただくマーケターさん向けに勉強会の定期開催を予定しています。
基本を学ぶだけで出来ることが広がるSQL、エンジニアリングの知識がない方もぜひ実践を交えて学んでみてください！