見出し画像

非エンジニアがSQLを1日で書けるようになる方法

本記事では「SQLが全く分からなかった非エンジニアの自分が、SQLの基礎を1日で身につけた方法」をまとめました。

「SQLが全く分からなくて勉強したいけど、何から手をつけたら良いのか分からない」という方に少しでも参考になれば嬉しいです。

自分は最初書籍などにも手を出したのですが、「最初からProgateやっておけば良かった・・・」と思い、これからSQLを学ぶ人が、同じ遠回りをしないといいなと思いながら書いてます。
(もちろん人によって合う勉強法/合わない勉強法があると思うので、1つの事例として見ていただけたらと思います)

前提

  • ビジネスサイドで仕事をしてきた非エンジニア

  • SQLを身につけたいと思い、書籍などで勉強するも挫折

想定しているゴール

  • SQLの基礎(※)を身につけ、SQLを使う際に「自分が何が分からないのか、分かる状態」

※SQLの基礎
複数テーブルをつなげて、グループ化し、欲しいデータを抽出するレベル感
(何を持って「基礎が身についている」というかは人によって違うかと思いますが、本noteでは上記を定義とします)

イメージ
カテゴリ毎の売上を売上が高い順に並べる
(「売上」と「商品」のテーブルが分かれている)

基礎を身につけ「何が分からないのか、自分で分かる」ようになれば、あとは「調べる&聞く」で、どんどんレベルアップしていけると思います。

この「何が分からないのか、自分で分かる」が大事なスタートラインだと考えています。
(そもそも、基礎が分からないと、何を聞いたら良いかすら分からないんですよね・・・自分がそうでした)

勉強方法(10時間で基礎を身につける)

使うのはProgateのSQL講座です。

無料で学べる部分もありますが、全て学ぶためには有料会員になる必要があります。

といっても、税込1,078円/月(2023年3月時点)で、本1冊買うより安いです。迷わず課金しましょう。(Progateとは全く関係なく、回し者ではないです笑)

下記でProgateを使った詳しい勉強方法をまとめます。

①1周目:スライド部分だけ読んで、全体像を掴む(2-3h)

Progateは大きく「①スライドでのインプット(NOT動画)」+「②演習問題」の2つで構成されています。

学習効率を上げるために、SQL初心者の人は最初から「②演習問題」も解くのではなく、SQL基礎の全体像を掴むために「①スライドでのインプット(NOT動画)」のみ2~3時間程度でさっと1周することをお勧めします。

最初にさっと1周する目的としては、いきなり「②演習問題」を解いて躓くと嫌になってしまう可能性があるので、まずは学ぶことの全体像(できるようになることの全体像)を掴み、これに取り組むことでのゴール(身につくこと)を明確にイメージすることで、モチベーションを上げる意味もあります。

「①スライドでのインプット(NOT動画)」は要点のみが非常に分かりやすくまとまっているので、2〜3時間もあれば、ある程度理解をしながらでも1通り読めてしまうかと思います。

②2周目:スライドを読む+演習問題を解く(5-6h)

2周目は、スライドを読むのに加え、実際に演習問題も解いていきます。演習問題を解きながら、分からなければスライドに戻り、極力自分の力で正解に辿り着きましょう。

「答えを見る」では「自分の書いたクエリ」と「正解のクエリ」との比較もできるようになっており、「自分の書いたクエリ」のどこが間違っているのかも非常に分かりやすいです。

「学習レッスン」が一通り終わったら、最後に「道場レッスン」に取り組みましょう。

「道場レッスン」の問題が一通り解ければ、本noteで定義しているゴールである、「SQLの基礎」が身についた状態です。

③3周目:必要に応じて復習でもう1周(お好みで)

「自分の理解が浅いな」と思ったところを中心に、必要に応じて復習でもう1周。②までを8〜10時間かけて1日で、この③を翌日にやると定着も良くなるかなと思います。

実務で使えるようになるためにすること

上記まででSQLの基礎が身につきましたが、これだけでは実務で使うことが難しかったりします。

実務で使うためには、下記2つの課題クリアが必要だと考えており、2つの課題をクリアするためには実際に社内のデータを使ってクエリを書いてみることが重要です。

実務でSQLを使うための2つの課題


  1. 実務で出したいデータがある際に、社内のどのデータを使えば良いか分からない(どのテーブルのどのカラムに何のデータがあるのか分からない)

  2. 社内データの持ち方に依存する、社内独自の条件指定方法が分からない


社内のデータを使ってクエリを書いてみる

これを行う際に良いのが「社内のSQLに詳しい人に、社内データを使った課題を出してもらうこと」です。

「自分で課題設定し、(出したいデータを決め)練習する方法」もあるかと思いますが、可能であれば「社内のSQLに詳しい方に、課題を出していただく方法(課題形式)」が良いかなと個人的には思います。

課題を出してもらう形式が良いと考える理由は、下記3点です。

  1. 順序立ててレベルアップできる(低→高難易度で挫折しにくい)

  2. 課題なので既に解答が存在する

  3. フィードバックをいただきやすい

課題形式であることで、順序立ててレベルアップできると同時に、既に解答も存在するので、フィードバックをいただきやすく、スピーディーに学ぶことができました。

これが、自分で課題設定すると、「その課題の難易度が分からず、いきなり難易度が超絶高くなる可能性」、「正解となるクエリ(SQLの記述内容)が存在しない」、「フィードバックをもらうために、出したいデータの前提条件のすり合わせから必要」といった課題が発生し、挫折の機会を多く作ってしまうことになります。

課題を解き、分からない部分を質問させていただく中で、一般的なSQL記述方法だけではなく、社内データのお作法(課題の1&2)の理解が進み、課題を解く毎に、実務で使うイメージが持てるようになっていきました。
(お付き合いいただいた先輩には本当に感謝です。ありがとうございました。)

SQLをある程度書ける場合でも、転職・異動などで環境が変わった場合は、上記課題の1&2が発生しうると思います。

全員がすぐに新しい環境でSQLを使えるようにするためにも、オンボーディングの一環で、社内データを活用したSQL課題は用意しておくと良いのかなと感じました。

SQLを学んで良かったこと

特に日々数字を見て、改善施策を考える上でも、「2,数字への解像度が上がる」はSQLを学んで非常に良かった部分だと感じています。

  1. ちょっと気になった数字をパッと調べられる

    • 今まではSQLを書ける人にお願いしなければいけなかったものを、パッと自分で数字を出せるようになることで仮説→分析のスピード感がUPしました。

  2. 数字への解像度が上がる

    • 管理表などで集計されている数字に関しても、各種数値の定義(SQLの記述でどういった定義がされているのか)が分かることで数値への理解がUPしました。

終わりに(よりレベルアップするために)

自分の学びの備忘録も兼ねて、本noteを書きましたが、正直まだSQLに関しては、スタートラインに立っただけの状態だと思っています。

ただ、このスタートラインに立つのが1番大変なのかなとも思っています(自分が実際にそうだった)。

スタートラインに立ててしまえば、あとは実務でSQLを書きながら、不明点があれば「調べる」「聞く」でどんどん幅を広げていけると思います。

実務で使いながらSQLのレベルアップ方法

  • 他に似たクエリがないか探す

  • ググる

  • Chat GPTに聞く(ピンポイントの回答が来るので、ググるよりこちらの方がお勧め)

  • SQLの得意な人に聞く

本noteがSQL修得で悩む人にとって少しでも参考になれば嬉しいです!
最後までお付き合いいただきありがとうございました!

Twitterもやっているので、もし良ければフォローをお願いします!
https://twitter.com/koou0506

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