【SQL】『SQL未経験 → 3ヶ月でデータサイエンス100本ノック全問制覇』までのロードマップ (初心者向け)

# はじめに

### 筆者について
[Matcher株式会社](https://www.wantedly.com/companies/matcher)で エンジニア/ビジネス職 の両方を担当している者です。

元々学生時代は生物系の学部に所属しており、
プログラミング経験と言えば大学生向けプログラミングコミュニティ『[GeekSalon](https://geek-salon.com/)』にて
Unity を用いたゲーム開発を教えていたのと、1年ほどiOSエンジニアをやっていただけなので

『SQL』『データベース周り』『データサイエンス』『データ分析』的なところには
一切触れて来ない人生でした。

しかしこの度、今後業務で使うことになっていくというのと、
『データドリブンのより良い意思決定できる為には、ある程度データを自在に操れた方が良いかな』
という理由から、少し本腰を入れて SQL を勉強しようと考えました。

色々調べた結果、『**データサイエンス100本ノック**』といういかにも分かりやすいものがあったので
それを全問制覇することを目標としてこの3ヶ月勉強を続けてきました。

### この記事で書くこと
**『SQL 未経験からデータサイエンス100本ノックを全問制覇する』** ためのロードマップです。

SQL 全くの未経験だった自分ができた内容なので
再現性の高さについては確信に近いものを持っています。


### この記事で書かないこと
**『データ分析未経験からデータサイエンティストになる』** ためのロードマップではありません。

自分も初学者で『データサイエンスとはなんたるか』について語ることはできないし、
ましてやそれになる為の方法など分かるはずもないからです。


### 勉強時間について
**『毎日朝早起きをして、始業前に必ず1時間勉強する』** という形で進めました。

元々早起きが得意だったわけではありません。
単純に終業後だと疲れてしまっていて自己投資の為に時間を使う気力がなくなってしまっていることが多かったので
確実に時間を捻出する為の手段として早起きを始めました。

結果として、朝早起きをすると
**『心も体も一番元気な時間を自己投資に充てることができる』**
ということが分かったので、この習慣は継続します。


# ① SQLの基礎 勉強
### 参照したサイト
▶︎ [**Progate【SQL】**](https://prog-8.com/courses/sql)
[<img width = 500 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210717/92701356-4b60-d5fb-412e-e6ebfe6d762f.png">](https://prog-8.com/courses/sql)

### コメント
言わずと知れた Progate です。
これまでどれだけお世話になったか分かりません。

こちらの内容を有料課金のものを含め、全てやりました。
1ヶ月だけ課金をしてその間に全てやりきってしまえば
十分すぎるくらいのおつりが来ると自分は考えています。

『SQL をある程度できるようになりたい』くらいであれば、
もうこれだけで十分レベルです。
全てやりきれば「自分 SQL ちょっとわかりますよ🙋‍♀️」くらいにはなれます。

Progate さん神ですありがとうございます。

# ② とにかく SQL の問題を解く [Part 1]
### 参照したサイト
▶︎ [SQL練習問題 一覧まとめ](https://tech.pjin.jp/blog/2016/12/05/sql練習問題-一覧まとめ/)
[<img width = 500 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210717/596aaf89-3842-78bb-af0b-1901240d128a.jpeg">](https://tech.pjin.jp/blog/2016/12/05/sql練習問題-一覧まとめ/)

### コメント
こちらもめちゃくちゃ神です。
ひたすら SQL の練習問題が載っています。

**・SQL入門練習問題シリーズ**
**・基礎力チェックシリーズ**
**・力試しシリーズ**
と3つ用意されており、問題数も豊富で解答解説までついている非常に神なサイトです。

Progate の有料のところまで全て解き終えた方は
基礎力チェックシリーズから始めて、その後に力試しシリーズを解いていくことをおすすめします。
力試しシリーズは結構ほねのある問題もあるのでがんばって解きましょう！

力試しシリーズまで全て解き終えた時には
かなり SQL にも慣れて自信がついてきます。

ーーー

Progate と比べて難易度が高いのは『 MySQL の環境構築が必要』という点です。
Progate の場合はサイトにアクセスしてすぐに学習を始めることができましたが
こちらは自分の PC に学習を始める為の準備をしなければいけません。

=== === === === === === === === === ===
▶︎ Windows の場合 : https://prog-8.com/docs/mysql-env-win
▶︎ Mac の場合 : https://prog-8.com/docs/mysql-env
=== === === === === === === === === ===
↑ こちらを参考に MySQL の環境構築をしましょう。

もし記事通りに行ってもできない場合は
・出てきたエラーでググる
・『myspl windows 環境構築』等でググる
などして、なんとかします。

前述の記事通りの方法でなくても MySQL が使える環境が整えば
どんな方法でも構いません。

# ③ とにかく SQL の問題を解く [Part 2]
### 参照したサイト
▶︎ [**MySQL10本ノック作ってみた！**](https://qiita.com/yasumon/items/a11b0e5d93e9bebec7a2)

### コメント
こちらも練習問題とその解答を用意してくれている神記事です。

環境構築については [Part 1] と同様の環境で実行可能なので
特に新しい準備は必要ありません。

問題を解きまくってデータサイエンス100本ノックに向けて英気を養いましょう。


# ④ データサイエンス100本ノック [SQL]
### 参照したサイト
▶︎  [**データサイエンス100本ノック (構造データ加工編)**](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess)
▶︎ [**Macでデータサイエンス100本ノックを動かす方法**](https://qiita.com/karaage0703/items/1b18b1f4ab65d35afb5f)
▶︎ [**データサイエンス100本ノック(構造化データ編)SQL版全問題解説**](https://festakebab.hatenadiary.com/entry/2020/07/08/091220)


### コメント
ついにここまでやってきました。あとは解くだけです。
ここでの一番のハードルはまた新たに環境構築をするべきだという点です。

上記『参照したサイト』でもいくつか取り上げていますが記事等参考にしながら
なんとか環境構築を進めていきましょう。

公式でもガイドを用意しれくれているので、先ずはそちらを見てから
どうしても分からない場合は記事等を参考にする、という流れの方が良いかもしれません。

↓[**公式のガイド**](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/blob/master/docker/doc/100knocks_guide.pdf)
[<img width = 500 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210717/c5b26126-ec3f-8555-9c13-8efe469addde.png">](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess/blob/master/docker/doc/100knocks_guide.pdf)

**毎日1時間勉強するだけで、必ず3ヶ月で、未経験からでも終わらせることができます。**
最後がんばって走り抜けましょう！🏃‍♂️

--

**2022/09/07 追記**

前述の環境構築をしなくても
すぐに100本ノックに取り組めるものを作ってくれている方がいらっしゃいました！
よろしければ参考にしてみてください。

参考：
[**データサイエンス100本ノックをGoogle Colaboratoryで実践【SQL編・Python編】**](https://note.com/nmt_rootassist/n/nf70b6e73f673)

※ GoogleColaboratory を利用するため、Google アカウントが必要です。


# おまけ

▶︎ [**営業さんまで、社員全員がSQLを使う 「越境型組織」 ができるまでの3+1のポイント | リブセンス**](https://www.slideshare.net/livesense/150225-sql-foreveryone-45695818)
[<img width = 500 src = "https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/210717/d2852017-2141-d6a7-2b26-039675694ac7.jpeg">](https://www.slideshare.net/livesense/150225-sql-foreveryone-45695818)
↑こちら、自分が個人的にモチベーション上がったスライドです。

先ずは自分が勉強してできるようになって、
それを周りのメンバーにまで伝播させることができたら素敵ですよね！
(自分はまだそこまでできていませんが...)

# 追記
### 2022/11/22
個人開発で [**SQLab**](https://sqlab.net/) という神サービスを作られている方がいらっしゃいました。
Progate と同じように環境構築いらずで Web サイトにアクセスしてすぐに学習を始めることができます。

▶︎ どんなサービス？
SQLab は初・中級者向けの問題演習が多く取り揃えられており
『実際に手を動かして、どんどん SQL を書いて学ぶことができる』サービスになっています。
Progate は入門者向けで問題演習よりも説明解説偏重というイメージなので、目的に応じて使い分けるのが良さそうです。

▶︎ いつ取り組むのが良い？
Progate を一通り終わらせたあとに SQLab に取り組むのがおすすめです。
Progate と SQLab を全問制覇するだけでもかなり SQL に慣れることができると思います！

こんな神サービスがアカウント登録するだけで無料で利用できるので
使わない手はありません！🏃‍♂️

[SQLab: SQLの練習ができる学習サービス](https://sqlab.net/)