スクリーンショット_2019-05-23_17

SQLを学びたいあなたへ

こんにちは
taskey Railsエンジニアの田代です。作っているもの 


サーバエンジニアと言えど、スタートアップではRailsだけを書いていたら良いという訳には行きません。
今回は、突然データ分析をしてくれと頼まれ、当時ActiveRecordに頼りきりだった僕が、どのようにSQLを習得して社内のデータ分析エンジニア(仮)になったのかを書かせていただきます。

対象者: データ分析をしたいマーケター, ORM(ex. ActiveRecord)で何が起きているか知りたいエンジニア

 ※コードレベルの解説は行いません。SQLを使いこなせるようになるまでの注意点と学習教材に関して、POINTを踏まえてご紹介させて頂きます。

STEP 1: progate

エンジニアの皆さんはご存知だと思います。progateというオンライン学習教材です。個人的にはプログラミングの入り口としては最適だなと思っております。こちらのSQLコースは入門としてめちゃおすすめです。
progateのSQL LV.ⅢまではORMに頼っている人にも比較的スムーズに解けるでしょう。
ただ、ここで重要なのが、必ず道場コースまでしっかりと解くことです。
データ分析等に重要な集計関数や、GROUP BYなどのイメージをここで頭に叩き込んで下さい。
多少のつまづきはあるかも知れませんが、時間をかけて向き合えば必ず解けるはずです。


 [point] 
・SQLでは手続き的なコードはかけません。出来るのは集合に対する操作です。そのイメージを持ちましょう。
・SELECT, FROM等の予約語や、SUM, COUNT等の関数は大文字で書きましょう。SQLは大文字小文字を区別しませんが、統一しておくことで今後読み返す時に楽になります。
SQL FORMATTER等もあるので、自分の読みやすい形に整形してから読みましょう。※SQLを人間が理解することはそもそも少し難しいので、少しでも脳内CPU不可を下げる為、自分の読みやすい形に整形してから読みましょう。
・下記JOIN系のalias

[alias]
LEFT OUTER JOIN = LEFT JOIN
RIGHT OPUTER JOIN = RIGHT JOIN
INNER JOIN = JOIN

STEP2: 達人に学ぶ SQL徹底指南書

step1だけでもある程度のSQL力はつくかと思います。
しかし、実際に分析用のSQLを書く場合JOINやSUB QUERYなどが乱発せざるおえなくなる事がほとんどです。
それらの理解を深める為、名DBエンジニアのミックさんが書いた達人に学ぶ SQL徹底指南書を是非読んでください。僕はこの書籍にとても救われました。
集合に対する操作というイメージがこの書籍をしっかり読むことにより、一層深くなります。
またSQLのイディオム的なものも多数あるのでより実践的な力が身につきます。
初めは集合論で考えるということに違和感を感じると思います。特にエンジニアの方は普段のプログラミングとは違う思考回路を使うことになるので頑張ってください。
練習問題が各所にありますので、そちらは何度書籍を読み返してでも理解するまでしっかり解いてください。必ず血肉となるはずです。

[POINT]
・読み終わったあとは実際に棒グラフや折れ線グラフが書ける出力をするクエリに挑戦してみてください。そこでユーザ等の傾向を見れたなら、あなたは立派な分析エンジニアです。さらに要素として付随する状況も一緒に出せたら最高です。
 ・普段アプリを動かしてる時に出力されるSQLのログを見てみましょう。なるほど! が沢山落ちていると思います。そのままだと見にくいのでFORMATTERにかけてから読んでくださいね。
・DATE系の関数はBDの種類によって特に方言が強いです。気をつけましょう。
・SELECTでのSUM(CASE WHEN HOGE THEN 1 ELSE 0 END)はマジでめっちゃ使います。
・SELECTの中でサブクエリしたっていいんですよ。めっちゃ使います
・GROUP BYしてからのSELECT句はとてもつまづきやすいPOINTです。集合に対する操作というのを強くイメージしてください。
・HAVING句は素晴らしいです。使いこなしましょう。
・WINDOW関数は残念ながらDBによってはサポートされてませんが、基本的な使い方はマスターしておきましょう。とても便利な道具です。一応頑張ればサブクエリでも代用できます。
・EXISTS句を使えると速度改善に繋がります。

STEP3: 達人に学ぶDB設計 徹底指南書

正直STEP2を完璧に出来たらほとんどのSQLを書くようになれるかと思います。
ここからはマーケターの方は読まなくて大丈夫です。カラム型データベース何それ?正規化ってなんとなくしてたなぁ。。というエンジニア向けとなります。
STEP3でご紹介致しますのは達人に学ぶDB設計 徹底指南書です。こちらもミックさんの書籍ですね。
カラム型データベースがどうして早いのか、BigqueryはどうしてSELECTを減らすと安くなるのか、それらの秘密が詰まってます。
正規化のトレードオフも魅力的な内容でした。

[POINT]
・あえて正規化をしない選択肢とは
・木構造をカラムで表現する
・豊富なバットノウハウ
・第一正規化の定義、スカラ値とは?
・当たり前になりつつあるIDキーとは?

まとめ

多分何かを学ぶ時に欲しいのって、教材等のロードマップだと思います。ですので、今回は自分がSQLを習得するまでの教材ロードマップをご紹介させて頂きました。
分析をしたいだけならSTEP 2まで、DB設計等も学びたいならSTEP3まで実践してみてください。
今度はモダンな分析環境構築ロードマップ的な記事も書かせて頂きます。

ここまで読んで頂きありがとうございました。

CM

[募集]


[主催コミュニティ]

[ドラムで入ってるバンド]


この記事が気に入ったらサポートをしてみませんか?