非エンジニアのSQL学習ことはじめ
非エンジニアのSQL学習ことはじめ

非エンジニアのSQL学習ことはじめ

💡

※ この記事は、LayerX Advent Calender 2022(概念)の記事です。

これは何

<Table Of Contents>

はじめに

こんにちは!すべての経済活動をデジタル化したいLayerX伊藤です♨ (言ってみたかった)

今年も気づけばあと1ヶ月と少し。ぼちぼち忘年会の予定や、この1年の振り返り的なイベントが入ってきている方も多いのではないでしょうか。

そして年始の目標に掲げていた「今年こそSQLできるようになる!🔥」という過去の自分の宣言と、まったくできるようになっていない現状を比較して自己嫌悪に陥っているBizサイドの人も多いのではないでしょうか。

本稿はそんなあなたに向けた記事になります。

取り組むことになったきっかけ

かく言う自分も今年の春くらいまではまっっっったくSQLできませんでした(今も"できる"とは言い難い…)

前職のReproはRedashを使っていたのでダッシュボードは見ていたのですが、ソースコードには全く触らず。dmemo(データベースドキュメント管理システム)も閲覧はできましたが「ほーん😗」という感じ。

💭

🙍‍♂️< SQL? ぼくExcelもGAもそこそこ使えるから要らんやろ

くらいの気持ちでおりました。

そこに、「転職」「GA4の登場」「運営してるECのデータ基盤整備」というトリプルパンチ👊👊👊 が到来し、これはできるようにならねばヤバい、、、ということで学習を始めました。まさに必要は発明の母。

1. LayerXへの転職

まず第一の焦りはLayerX社への転職です。(ちなみに入社しましたポストはこちら)

働き始めているのは11月からなのですが内定は夏にはいただいており、「内定もらったはいいけど、激ヤバエンジニア集団のイメージがあるLayerXで自分は活躍できるのか不安だな~😧」と思っていた矢先にこんな記事が出ました。

LayerXではBizメンバーがSQLを叩くことが日常となっているため、クエリを書いてささっと共有してコミュニケーションをしています。

う…😧

そしてfukkyyさんのTweet。

共通言語的にみんなができるSQL

うう…😧

更には、LXに入るきっかけをくれた野畑君からも。

image

結構DX部(SaaS事業部)のみなさんSQL使ってる

うわああああ😧

(でもブロックチェーンは必要ないんだ良かった)

…ということで、転職によってお尻に火がついてしまいました。

2. 運営しているECサイトのデータ基盤整備

会社からのプレッシャーの次は事業からのプレッシャーです。

経緯は諸々割愛しますが、LayerX社と兼業の銭湯ぐらしという会社で、この1年半ほどサブスク型のD2C事業をやっております。

細々やるつもりだったのであまり考えずカートシステムをBASEにしたのですが、けっこうな注文数/月商が立っている今でもBASEを使い続けていて大変つらい、移管プロジェクトが絶賛進行中という現状があります。

(BASEは素晴らしいサービスなのですが、如何せんリピート通販向けではないのと今の事業のフェーズに合わず…🥲)

アクセスログやらお客様のアクティビティやらの各種データはスプレッドシートとAirtable(※RDBがシュッと作りやすいSaaS)に溜め、必要に応じてこねくり回して分析&可視化している状態。

カートシステムの移管を考えるにあたり「さすがにデータの集約がスプシとAirtableのままなのはまずい」と気づき、

色々な会社さんのアーキテクチャを見ていたらスタートアップはやっぱりBQを採用しているところが多かったので「銭湯ぐらしでもこれをやろう」ということでBigQueryを触り始めたらここでもSQLが…!

SQLというよりは「データ基盤にはBigQueryが良さそう → BQ使うならSQLマストやんけ😧」という順番なのですが、こちらも自分を焦らせるには充分な動機でした。

3. Universal Analytics(UA) → Google Analytics 4(GA4)への変更

最後は市場トレンドからのプレッシャーです(こちらは1と2ほど強いプレッシャーでも無いですが)

昨年からデジマ界隈を賑わせているHot Topicの一つが「Googleアナリティクス 4(GA4)」だということは皆さん周知の事実かと思います。

この変更も自分は「ほーん😗」という感じだったのですが、SQLよりは取っつきやすく感じたのと、Reproでも話題になっていたり前述のECサイトでもGA4設定せねばだったのでちょこちょこ調べていました。

そうしたら、アクセス分析の大家(たいか)である小川さんや後述する本の著者プリンシプル木田さんはもちろん、マーケ界隈で身近で尊敬している石渡さんなどもGA4とBQ、そしてSQLを一緒に語っているではありませんか。

幸か不幸かGA4の管理画面はめちゃくちゃ使いづらいのでGA4の使い方を新規で覚えるんだったらBQもSQLも一緒に覚えてしまおう、という結論になりました。

要するに「転職」「GA4」「データ基盤整備」の3つがほぼ同時にやってきて

💭

わからん、オワタ 😇

となっていたのが夏ころまでの自分です。

学習前の自分のレベル感

学習を始める前の自分のレベルはこんな感じです。大学の専攻やキャリアの主軸に分析がきたことは一度もない、まあティピカルな文系Biz人材というかんじ。

  • ド文系。数学は大学受験で数ⅡBまで。旧帝大レベル
    • ちなみに謎の誤解を持たれている方ちょいちょいいますが「数学できるかできないか」はSQL学習にほぼ関係ないです
  • Excelはまあできる
    • 広告運用レポート / 事業計画 / プロジェクト管理etcの実務
    • MOSのExcelエキスパートに載っているようなpivotや統計関数いくつかなどは普通にでき、業務でも経験有
  • リレーショナルデータベースへの最低限の理解はある
    • EC運用、Reproでの経験

どれくらいのレベルになるのか

ではそんな素人が1日1時間・3か月やったらどれくらいのクエリが書けるのか?

実例を挙げたほうがわかりやすそうなので、書籍『集中演習 SQL入門』の練習問題をいくつか抜粋してみます。

<問題の例>

💡

Q55. [customers]テーブルから、月曜日に生まれた、もっとも年齢の高い顧客について、顧客id(user_id)、氏名(name)、誕生日(birthday)を取得してください Q162. [sales]テーブルの[revenue]において、2017年の標準偏差(stddev_2017)と、テーブル全体の標準偏差(rev_stddev)を求めてください。ただし、データはサンプルではなく全数と考えます Q197. [web_log]テーブルで「/special/diet/」を閲覧したセッションと、閲覧していないセッションでそれぞれのCVRを取得してください。 (『集中演習 SQL入門 Google BigQueryではじめるビジネスデータ分析』より抜粋)

これくらいであれば、必要に応じてBQの関数リファレンスを見ながらにはなりますが、シュッとクエリで出せるようになります。

上記問題のうち、Q197の実際のクエリはこんな感じ。

<Q197のクエリ>

with t1 as(
  select
    concat(cid, session_count) AS session_id
    , max(if(page = "/special/diet/", 1, 0)) as view_diet_page
    , max(if(page = "/thank_you/", 1, 0)) as cv
  from sample.web_log
  group by 1
         )
,t2 as(
    select 
        if(view_diet_page = 1,true,false) as view_diet_page_session
        ,count(distinct session_id) as session
        ,sum(cv) as sum_cv
    from t1
    group by 1
    )
    
select
    view_diet_page_session
    ,sum_cv / session as cvr
from t2

<Q197の結果テーブル>

image

(with句2回使ってたりと、自分の回答がスマートな記述なのかは若干怪しい…🤔 ちなみに全ての問題の模範解答はネットに上がってます)

また、5年以上前のかなり古い記事ですが、エウレカさんのTech blog「SQLで分析を始めた人に贈る、中級者に上がるための10のTips 」とかに書いてあるものはほぼすべて理解~実践できるようになります。

まだ「SQL結構できます」などとは口が裂けても言えませんが、少なくともExcelなどと同様に

💡

・出したいデータに対して、調べながら自分で解を導ける ・自分でできない場合は、わからない箇所をおおよそ特定して他のクエラーに質問できる

というレベルにまでは到達できているかなと思います。

身につけ方

ここからは、「じゃあ実際にSQL書けるようになるためにはどう学んでいったらいいのか」について書いていきたいと思います(前置き長くてすみません…)

学習方法サマリ

  • 冒頭に書いたこととほぼ同じですが、Progateを速攻で終わらせてからの『集中演習 SQL入門』を隅から隅までやる、がオレ的最速です。
📝

< オレ的SQL最速学習方法 > ・ProgateのSQLコースを2~3周する ↓ ・書籍集中演習 SQL入門の練習ドリル230問をひたすらやる ・自社サービスにGA4 + BQの環境構築する ↓ ・練習ドリルの合間に書籍『達人に学ぶSQL徹底指南書 第2版』を読む ・データベースとかBigQuery関連の動画もちょいちょい観る

学習時間の目安

「本当に1日1時間を90日間やるだけで出来るようになるんかいな🤔」と不安な方もいるかもなので、上記学習を完了する目安を書いておきます 🗓️

  • ProgateのSQLコース:4~6日
    • SQLに関する4つのコースの完了目安時間は合計7hと書いてありますが、そんなにかからないかと
  • 書籍『集中演習 SQL入門
    • 読むのを5~7日(全8章なので1日1~2章)
    • 練習問題の230問を1日3問で70~80日(230 ÷ 3 ≒ 76.7日)
      • 後半に行くほど難易度が上がるが前半は楽勝問題ばかりなので、ならして3問/dayという感じ
  • その他の書籍や動画
    • 空き時間でちょくちょく

どうでしょう、コツコツやれば行けそうな気がしませんか?🧗

学習教材について

サブクエリ、JOIN、ウィンドウ関数など概念的に「🤔?」となるところを攻略したらあとはどれだけ色んな書き方のパターンや関数を覚えられるかのゲームになるので、

  1. 入門中の入門として一番説明がわかりやすいProgate
  2. Progateでカバーしていない概念系の説明がわかりやすく、手を動かせる問題が200問以上ある『集中演習 SQL入門
  3. 色々なクエリを書いていくにつれて追加で浮かんでくる疑問と、データベースとは何かについての理解を深めてくれる『達人に学ぶ-SQL徹底指南書

の3つがSQL初心者向け3種の神教材になるかなと思います。

3つすべてに課金(購入)しても6,500円くらい。あとは必要に応じて公式ドキュメント/Qiita/Zennなどをググればわからないところも解消できるので、個人的にはお金払うのはこの3つでよいかなと思ってます。

オンライン学習

  • Progate一択でいいかと思います
    • 比較していないのでわかりません😇 Udemyとかどうなんでしょうね

書籍

自分は合わなかった書籍

  • スッキリわかるSQL入門 第2版 ドリル222問付き!
    • パラ読みしかしていないですが、大半の内容はProgateでカバーしてそうと思います
    • この本が用意している「dokoQL」という環境を使ってやるのですが、これだったらProgateにも同じ環境あるなと
    • あとこれはProgateもそうですが、select 出金額 from 家計簿のようにサンプルで出てくるテーブルのカラム名が日本語なのが自分は違和感ありました… 😗
  • ソフトウェアデザイン 2017年 11 月号 [雑誌]
    • 非エンジニアが気づいたらSQL書けるようになった話@BASEで紹介されていたので買ってみましたが、本号目玉の「SQL50本ノック」は量も実践との近しさも『集中演習 SQL入門』に及ばず、買ってパラ読みしてすぐやめました🙁
    • あと(演習だけなので当然ですが)環境構築は読み手にお任せ、というのも初心者にはちょっと敷居が高いのかなと思います
  • 10年戦えるデータ分析入門
    • Gunosyテックブログなどをはじめ、よくSQL始めるための入門として紹介されていますがまだ読んでいません😇 良い本とは聞いたので、いつか読んでみる…

動画

SQL自体を動画で学ぶことは無かったのですが、データベースとBigQueryの学習に関しては本やGoogleの公式ドキュメントよりも動画でわかりやすいものがいくつかあったのでちょいちょい観てました。

動画は英語だともっといっぱいありそうです。

PlaygroundとしてのBigQuery

前述の通り、概念系の「🤔?」をひと通り理解したらあとは手を動かすのみ!なのですが、そこでとってもありがたいのがBigQuery。

icon

・環境構築など小難しい準備が必要ない ・自分で練習用として使うレベルなら無料 ・スプレッドシートやCSVなど読み込ませればそれをデータソースとしてクエリで扱える

文法に多少差異があるので自社でRedashやMetabeseがデファクトになっている場合はそちらをPlaygroundとするでも良いかなと思いますが、

本稿で推している『集中演習 SQL入門』はBigQueryを前提とした書籍になっているので特に制約がなければBQで良いかなと。

初級編:リトマス紙としてのProgate

ここからは、この学習方法を進めるにあたっての躓きポイントや所感などを書いていこうと思います。(超初級〜中級のレベル感は完全に自分の独断と偏見です)

再掲

📝

< オレ的SQL最速学習方法 > ・ProgateのSQLコースを2~3周する ↓ ・書籍集中演習 SQL入門の練習ドリル230問をひたすらやる ・自社サービスにGA4 + BQの環境構築する ↓ ・練習ドリルの合間に書籍『達人に学ぶSQL徹底指南書 第2版』を読む ・データベースとかBigQuery関連の動画もちょいちょい観る

まずは超初級編としてのProgate(プロゲート)から。

Progateに関しては、「そもそも自分はクエラーとして適性があるのか」を測るリトマス試験紙としてとりあえずやってみるのが良いと思います。

おそらくSQLのコースI~IIIまでひと通りやってみたときに躓くのは

  • whereとhavingの使い分け
  • distinct
  • サブクエリ
  • JOIN

あたりだと思いますが、1周目はともかく2~3周やってみても分からなかったら教材としてのProgateがどうこうという話ではなくおそらく根本的に向いていないので、

「自分は向いていないんだな」と諦めたほうが良いかなと思います。人生、諦めも肝心 😇

逆にここで「楽し~!」となったりSQLZOOとか他サイトの問題をProgate側で書いてみたりする気持ちがあれば、このあともやり切れる可能性が高いです。

初級:「クエリが読み解けない」を突破する

Progateが終わったら、神教材その2にして90日間の学習のほとんどを費やすことになる集中演習 SQL入門に入っていきます。

ちなみにProgateで学ぶことはこの書籍もすべてカバーしているので、いきなりこの書籍から始めてもいいと思います 📔

Progateやってからすぐに会社のエンジニアが書いているクエリの写経などで学ぼうとすると爆死するので、この書籍の各チャプターで下記の構文を覚えていきます 📝

ここまでひと通り終えると、関数単位でわからない(知らない)ところはまだまだ沢山出てきますが、他の人が書いたクエリを読んで「何がどうなってんだこの書き方??🤔🤔」と文法から理解不能になることはまずなくなるはずです。

英語学習でいうと、時制や仮定法、SVOCなど5文型をひと通り覚えてあとは単語やイディオムの蓄積を増やしていく段階と同じ感じ?(適当)

中級編:関数のボキャブラリーを増やし、実践で使う

書籍『集中演習 SQL入門』の各チャプターを1周したら上記で挙げた文法はひと通り修了するので、あとは100本、いや、230本ノックです⚾

📝

書籍『集中演習 SQL入門』の練習ドリル230問をひたすらやる

練習問題に取り組む過程で、

  • 数値変換系の関数
    • 四捨五入したり変換(cast)したり
  • 日時変換系の関数
    • タイムゾーン直したりクオーターごとにまとめたり
  • 文字列変換系の関数
    • 文字列つなげたり数えたり抜き出したり
  • 正規表現
    • urlのパラメータとったり👆より柔軟に文字列置換したり

など実務で当たり前に出てくる関数を何度も書くことになるので、最初はBQの関数リファレンスを何度も見ながらになって時間かかると思いますが、繰り返しやって自分の血肉にしましょう🍖🔥

また、この段階まできていて、実務で沢山クエリを書く機会がある方は無理に230問すべてをやる必要は無いと思います。

BigQuery、Redash、Metabeseなどなど各々に用意された環境で頑張りましょう〜

中級に上がり、「Excelならこれできるのに><」ができない人へ

  • ある程度書けるようになっても、「これExcelでやったら秒なのに😕」というのが出てくると思います。改めてExcelって色んな関数や分析機能が標準実装されていて凄いツールだな~と
  • そんな方のために、逆引き的によく使いそうなものを書いておきます。
    • クエリは該当の箇所の抜粋で全文ではないのでご留意ください。

中央値

  • MEDIAN関数あると思うじゃないですか?無いんですよ🙄
  • 覚えにくいかもですがPERCENTILE_CONT関数を使えばできます。
    • 0.5のところは可変なので0.25などにすれば四分位数もとれます。
    • --男女別の年齢の平均値と中央値
      if(gender = 1,"男性","女性") as gender
      ,avg(
          datetime_diff("2021-12-31",birthday,year)) over(
              partition by gender
          ) as avg_age
      ,percentile_cont(
          datetime_diff("2021-12-31",birthday,year),0.5) over(
              partition by gender
          ) as median_age

移動平均

  • 前述のwindow関数avg を使えば簡単にできます。
  • --前後1ヶ月を含めた移動平均
    avg(sum_rev) over(
    	order by year_month
    	rows between 1 preceding and 1 following
    	) as moving_avg_rev  

加重平均

  • Excelだと「SUMPRODUCT関数」使って一発で出せるやつですね。前職入社当初、加重平均を知らなくて算術平均で出したら上司にボコされた淡い思い出。
  • sum内で"重み×数量"を掛けて数量で割ればスッと出ますね。
  • --価格×数量の加重平均
    select
        avg(revenue) as average
        ,sum(revenue*quantity)/sum(quantity) as weighted_average
    from sample.sales`

ピボットテーブル

RFM分析

バスケット分析

  • 「ビールを買っている人はオムツも一緒に買っている」みたいなやつです。『集中演習 SQL入門』でもp208に少しだけ出てきます。
  • 慣れないと概念的にやや「🤔?」かもですが、同じテーブルを分身させて結合する自己結合(self join)するとできます
-- もっとも多くのuserに買われている商品idの組み合わせを出す
with t1 as(
    select
        sales_1.user_id
        ,sales_1.product_id
        ,sales_2.product_id as product_id_2
        ,concat(sales_1.product_id,"-",sales_2.product_id) as prod_combi
    from sample.sales` as sales_1
    inner join sample.sales`as sales_2
    on sales_1.user_id = sales_2.user_id
    and sales_1.product_id < sales_2.product_id
    order by 1
)
select
    prod_combi
    ,count(distinct user_id) as users
from t1
group by 1
order by 2 desc

番外編:クエリの外に出る

  • 番外編として、クエリ230本ノック以外にもやるといいことをつらつら書いてみます。
  • 本パートに関してはもっといい方法や「これもやっとく/読んどくと良いよ」というのが沢山ありそうなので、ご存知の方はぜひ教えてください🙏

データベースやSQLという言語自体の理解

  • 50~100本くらいクエリ書いたあとで、『達人に学ぶSQL徹底指南書』『達人に学ぶDB設計徹底指南書』の2冊を読んでみましょう。
  • それでも全体の5~6割くらいしか理解できないかとは思いますが(自分はそうだった)、
    • データベースというものがそもそもなんなのか
    • なぜウィンドウ関数はonじゃなくてoverなのか
    • RDB近現代史
    • データベースのパフォーマンスを決める要因
    • といった、今までの学習でふわっと理解していた概念や素朴な疑問を書いてくれているので、読むとより多面的な理解につながります。

  • 2冊とも普通に読み物として面白いので、クエリ書くのに疲れた合間にちょくちょく読み進めるのがいいかと思います。
  • あとこの2冊に書いていないが概念系で重要そうなものでいうと「行指向データベース」「列指向データベース」があるので、オプトさんの各種データベースの特徴とパフォーマンス比較のスライドなど読んでキャッチアップすべしです。

データ基盤の理解(Data lake/DWH/Data mart)

  • SQLが書けなくても、デジマ界隈の方々は「データレイク」「データウェアハウス」「データマート」について一定の理解はあるかと思います。
  • SQLやBQを触った状態で改めて「この3つの違いは何ぞや」というのを学ぶと、理解が深まります。
  • ググれば色々出てきますが、「Data Engineering Study #1」でゆずたそさん(@yuzutas0)がとってもわかりやすく話しているので、まずはこれを観るだけでも十分かもです。
9分くらいからゆずたそさんの講演

GA4の特徴と仕様の理解

  • UNNESTの話もちろっとしましたが、実務でSQLを扱う際のデータソースがGA4やFirebaseの方は多いかと思います。
  • データ分析界隈の方もいろいろ苦戦されているように、GA→BQにイベントの送られるタイミングやワイルドカード(_table_suffix)など結構クセが強いのと、情報が日々アップデートされていくので公式Docを追う + 界隈の方々の発言を追う、でキャッチアップ頑張るべしです。
  • Firebaseも吐き出されるログの形式はGA4と同じのようですが、自分がほぼ触っていないので割愛します。

BigQueryの特徴と仕様の理解

  • あとこちらも情報が日々アップデートされていくので公式Docを追う + 界隈の方々の発言を追う、でキャッチアップ頑張るべしです。
  • BQに関しては書籍も色々ありそうですが、読めていないですm(__)m

やらなくていいこと

環境構築

  • 環境構築はまずBizサイドが行うことは無いので、やらなくていいでしょう。これが要らないのがBigQuery(以下略

SELECT文以外を覚えること

  • SQLには4大命令というのがあり、「SELECT、UPDATE、DELETE、INSERT」のうちこれまで扱ったのはSELECTのみです。
  • ProgateのSQLコースでもデータの追加・更新・削除を学ぶパートはあるのでサラっとやってみるのは全然アリですが、構文は一周したくらいだとすぐ忘れるので個人的にはやらなくていいかな〜と思います。
image

続けるためのメソッド

急に自己啓発本感あふれるパートですが、今後もどんどん新しいことを学ぶ必要に駆られるであろう将来の自分に向けた備忘録として続けるためのコツを書いてみます。

やらなきゃいけない状況を作る

  • きっかけのパートで書いた通り、自分は完全にこれでした。追い込まれないと頑張れないタイプ😇 環境を変えるのが手っ取り早いですね~。
  • 逆に、本稿の通り3か月位である程度できるようにはなるので、今できなくても何とかなっている人は無理にやらなくても良いのでは、と思います🐶

習慣化 is 正義

  • 何においてもそうですが、習慣化は本当に正義だなと思いました。自分の場合はコロナ禍で朝型にシフトしたのも要因として大きいです。モデルナワクチンの副反応で死んだ1日を除いて、毎日ほぼ欠かさずに続けられました。
  • 幸い『集中演習 SQL入門』は多様な練習問題が沢山あるので、「朝の6時半~7時半で1日3問やる」という超シンプルな原則だけ作ってそれに従っていれば自ずとレベルが上がっていくという風にできたのが良かったです。
  • もちろん時間通りに取り組めなかった日もありますが、どんなに眠くても忙しくても最低限
  • select hoge fuga
    from customer_table
    limit 100

    くらいの超簡単なクエリは書いてBQのコンソールを開かない日をゼロにする。「1日休むと取り戻すのに3日かかる」というのは迷信といわれてますが自分は一定正しいと思います。

記録を付ける

  • このあたりは完全に学習スタイルの話ですが、自分はゴールまでどれくらいのペースで行けばいいのか、あとどれくらいなのかなど見えているほうがモチベーションが続きやすいので「問題の完了予定日」と「実際に終わった日」などを書いてちまちま進めていました。
    • フルマラソンのペースメーカーみたいなイメージです🏃
image

クエリをGitHubで管理する

  • これは未だにどういう方法が良いのかサッパリわかっていないのですが、230問のクエリを全てBQに保存するのもアレなのと、
  • BQ上では複数のクエリ間をCmd+Fで検索できなくて「このQ180の問題、Q95あたりでも似たクエリを書いたような…」というときにパッと検索できないので、一つのファイルにバーッと解いていったクエリを書いてファイル上でCmd+Fし、差分を一人プルリクエストしてます。
image

もくもく会に参加する

  • 自分は試しに1週間ほど参加してみて特に集団学習効果が無くてもできそうだったのでやってないですが、こういう朝活/夜活のDiscordが何個かあります。
  • Studyplusとかもあるので独りだと続けられなさそうという人は入ってみてもいいかもです。

やってみての気づき

まだ3~4か月ほどですが、やってみての気づきなどを書いてみます。

取っつきにくそうだが意外と学習コスト低い

  • プログラミングと混同されて「非エンジニアには難しいのでは…」という謎の誤解があるような気がしますが、データベース操作言語なのでExcelなど使っている人であればぜんぜん取っつきづらくないうえに、学習コスト低いです。
  • 資格試験と比べるのもアレですが、
  • 📝

    TOEIC 800点を取るために必要なのが225時間~ https://www.rarejob.com/englishlab/column/20161029/簿記二級を取るために必要なのが250時間~ https://www.u-can.co.jp/course/data/in_html/61/column/column01.html

    らしいです。本稿が示す3か月で1日1時間ちょっとのSQL学習は合計100時間位なので、上記2つの資格を取る半分以下の学習コストとなります。

    もちろん暗記物の要素が強い資格試験とSQL学習を一概には比べられませんが、参考までに🙏

大人になってからのほうが勉強は楽

  • 本稿をお読みになっている人で「ExcelもGoogleフォームも一度も触ったことがない」という人はおそらくいないと思います。GA触ったことが無い人も少ないでしょう。
  • ということは今までの業務で何かしらデータベース的なものを扱ったことがあり、SQL学習の過程で「BQのこの関数はExcelのこの関数と一緒だな」「アンケートフォームの選択式と自由記述はデータ型の指定をしていたのか」など普段の業務とのメタ認知を効かせることができると思います。
  • 自分自身もそうでしたが、そうするとまっさらな状態から学ぶよりもずっと理解の深まりが早いです。経験は糧になりますね 💪
  • ご家族や仕事の兼ね合いなどで時間の捻出が大変な方も多いと思いますが、まあそれは何においてもそうなのでやると決めたならやるしかないですね🦌

結局のところ最初は量

  • 新しいことのキャッチアップ全般に言えることですが、最初はつべこべ言わず量をやるのが正解だなと改めて思いました。
  • 本稿もお勧めの学習方法などを挙げさせていただいてますが、結局は演習の230問をやりきれるかどうかが分かれ目なので、とりあえず騙されたと思ってやってみてください。

RDBの理解はあったほうがベター

  • 本稿の前のパートでも書いてますが、リレーショナルデータベース(RDB)の理解が浅い方はSQL学習にあたって一緒に勉強しておくのが吉です◎
  • 特に練習問題の整えられたテーブルを使ったselect文だけしかやらないと、実務で「このテーブルはどうやって作られているのか「テーブル間を繋げる(JOIN)には何を外部キーとしたら良いのか」というところに思いをはせることが出来ないかと思います。
  • なのでインプットとして学習教材のパートで挙げたような動画や書籍『達人に学ぶDB設計 徹底指南書』を読んだり、Googleフォーム + Airtableとかで簡易なRDBを自分でシュッと作ってみるのもおすすめです。
  • 若干気合いは必要ですが、EC運営などスモールビジネスやるのも激おすすめです!SQL、RDBに限らず色々気づきを得ます。特にB2B畑の方などはB2C新鮮で楽しいと思います💐

「クエリを書けること」以外のメリット

最後に、データベース言語としてのSQLを学ぶことによることによる副次的なメリットを書いてみたいと思います。

正規表現、カラム数、データ型に敏感になる

  • 「Excelやアンケートフォームなどを業務で使っていればメタ認知を効かせることができる」と書きましたが、逆もまた然りです。
  • SQLを学習することによって、今まで文字列で書いていた日付を日付型に変換しようという気になったり、人によってアンケートフォームの姓名を分ける人(2カラム)とフルネームの記入欄を設ける人(1カラム)がいることにイライラしたりすることがあると思います。
  • そういうところに気が回るようになれば、たとえSQLを使わなくても業務にきっと良い影響があるかと👍

指標の定義に敏感になる

  • 特にGAを普段触っている方は、BQを経由してGoogleデータポータルなどでkpiを可視化する過程で
  • 📝

    ・「チャネル別セッション」とはどういうログをgroup byして出している指標なのか? ・「GA4は管理画面から直帰率が無くなった!」と騒がれているが、ログ1行の page_viewか session_startのイベントを集計すれば普通に出せね? 😗

    などなど、今までGoogleアナリティクスでぼんやり見ていた指標がどういうロジックで管理画面に表れているかがわかるようになります 📊

  • GA4のGUI上でポチポチやるのも便利ですが、GA4はイベントやらパラメータやらプロパティやら初見で分かりづらく感じるものもあると思うので、より理解を深める意味でもBQに吐き出されるログから見るのお勧めです。

システムの裏側をイメージしやすくなる

  • これもクエリ書いてるだけだと身に付きにくいかもしれませんが、自分でER図を書いたりAirtable触ったりすると「なるほど、こういうビジネスモデルのサービスだとこういうテーブル構造が必要なんだ」というのがぼんやりわかってきます。
  • HubSpotしかりSmartHRしかり、SaaSなんて特にRDBのかたまりなので、考え方として身に付くと何かと役に立ちます。
  • 財務分析やられてる方やSalesforceアドミンの方などは、このあたりの思考が実務で自然と身についている勝手なイメージです。

頭のリフレッシュになる

春先にやっていた『大豆田とわ子と三人の元夫』観ましたか?最高のドラマでしたね…

というのはさておき、劇中では主人公のとわ子(松たか子)が夜な夜な数学の問題集を解くシーンが描かれていました。

観ていたころは特に気に留めていなかったのですが、当該シーンの考察を読んで「自分がSQL学習に感じていた効果もこれだ!」と膝を打ちました。

細かいですが、該当のシーンで問題が解けたときに、とわ子が、モヤモヤが晴れたようにハッと目を見開くような瞬間がありました。 つまり、解決策が見えない問題に悩んでいるときに、数学の問題という「論理的に1つの解を導き出せるタスク」に取り組むことで、頭をリフレッシュしているのではないかとも読み取れます。 (『『大豆田とわ子と三人の元夫』に見る!参考書・問題集が「演出」するとわ子のキャラクター』より抜粋)

特にBizサイドの日々の業務や意思決定は「100%正しい」ことが無いものも多く、何らかのトレードオフや交渉が少なからず発生します。

そんな白か黒かで語れない問題に脳が疲弊してしまったときに15分でもSQL書くと、ものすごく頭がスッキリします。すぐできるリフレッシュ方法としておすすめです。

おわりに

だいぶ長くなってしまいましたが、1日1時間を3ヶ月継続でどれくらいの知識が身につくか、クエラーとしてどれくらいのレベル感になるか、クエリが書ける以外のメリットは何か、などをなるべく網羅的に書いてみました。

というわけで、LayerXはラーニングアニマルにとってはとっても良い環境です!

SQLはほんの一例で、他にも身につけなければいけないこと転がりまくりで楽しいです~ 🐼

ちなみに今はSQLよりデザインツールの「Figma」を覚えなければいけなくなったので頑張ってますです…

マーケやセールスはじめ積極的に募集しているので、興味がある方は一度お話しましょう。

LayerX 採用情報

📌 CEO Message / LayerX Company Deck / 3つの事業 / ワークスタイル / 採用ポジション / メンバーと話す / Q&A 「四半世紀以上変わらない1000兆円マーケットに挑む」 LayerXが取り組む事業は1000兆円を超える『お金の移転』が関わるマーケットです。 この四半世紀、非効率でアナログな業務プロセスを続けてきたお金や価値の移転。 全ての人の「働く」に関わるこの課題を、私たちは私たちらしく「圧倒的に使いやすいプロダクトを提供すること」で解決していきます。働いている時間にワクワクを感じる。その源泉はプロダクトの使いやすさ、UXと信じています。 一つ一つは小さな改善でも積み重ねれば大きなものとなる。 向き合うマーケットは「働く人すべて」。多くの仲間・同志と力をあわせて、経済活動のデジタル化に風穴を開けていきたいです。 みなさんの可能性を信じています。私やメンバーとカジュアル面談をしましょう。 代表取締役CEO 福島 良典 LayerX Company Deck は、外部記事や資料内の各ページを相互回遊できるように数多くリンクが貼られています。ご興味のあるところからお読みいただけたら嬉しいです。 https://www.figma.com/embed?embed_host=notion&url=https%3A%2F%2Fwww.figma.com%2Fproto%2FEM16Fd90mA4aUvcIGMmBif%2FLayerX-Company-Deck%3Fpage-id%3D0%3A1%26node-id%3D15%3A4996%26viewport%3D241%2C48%2C0.05%26scaling%3Dcontain%26starting-point-node-id%3D15%3A4996%26hide-ui%3D1 LayerXは、3つの事業を行なっています。 企業活動における業務プロセスのデジタル化を推進するサービスを開発・提供 👉 詳細はこちら アセットマネジメント事業を合弁会社にて展開。法人及び個人向けのサービスを開発・提供予定 👉 詳細はこちら

LayerX 採用情報

SQL学習に詰まったら『大豆田とわ子』観ましょう。めちゃくちゃ面白いです。「人生とは」という感じがします。

それでは今年もあと少しですが、頑張っていきましょう 💪

シェアする

Comment