說到要轉職數據分析師,大概有 9 成的人都會建議你要學 SQL。原因是,要做任何分析之前都勢必要把數據從資料庫中撈出來,而 SQL 就是你跟資料庫溝通要撈什麼資料的語言。
SQL 算是難度很低的語言,甚至不算是程式語言的一種,但以運作邏輯來說還是有點類似的。但即便是難度如此低的語言,我當初在自學的時候都還是一直碰壁,簡單的題目都要想很久,後來我回頭看其實有些方式是可以幫助初學者稍為加速這個學習過程的。
以下就分享三個能幫助你加速學習 SQL 的方法。
1. 了解資料型態的概念
在程式語言裡,資料都會有不同的型態,存在資料庫裡的資料也不例外,最常用的像是 str(string,字串)、int(integer,數值)、date(日期)、timestamp(時間戳),但這跟我們使用 SQL 有什麼關係呢?
例如說在撈資料的時候,如果你的資料是以 str 儲存的,那麼在寫這個條件時,就需要在資料前後加上 ‘’,假設我們在一個叫做 channel 的欄位裡面,儲存一個叫做 Google 的值,當你要撈資料時,就必須下以下條件 channel = ‘Google’,這樣電腦才會理解這是 str 的值。
剛開始在學 SQL 的時候,往往有很大的機會會在這種小細節上撞牆,推薦各位先理解資料型態後,會更減少犯這樣錯誤的機會哦!
2. 善用圖像化學習,提升邏輯思考能力
身為初學者,常常會遇到問題的就是對語法的執行過程缺乏想像,而且在寫 SQL 的邏輯上還不是掌握得很好,尤其是遇到稍微複雜一些的題目類型,像是 left join、subquery 時,基本上就會被搞得暈頭轉向,愈寫愈不知道自己在寫什麼。
這時候善用圖像化學習,把 SQL 執行的過程具象出來,就能幫助自己理解 SQL 的運作邏輯(不只學 SQL,我覺得學 Python 時這個方法也讓我受益良多)。
這裡推薦 SQLflow 這個網站,可以把自己的 SQL 貼進去,看看他的運作方式,或是看到別人寫的很長的 SQL,但是看不太懂,也可以丟進來,它可以幫助你理解整段 SQL 的邏輯,像主表是什麼、連接條件、每個表提供了哪些欄位資料、怎麼取的等等都會很清楚呈現。
3. 對最終你要取的資料表欄位有所想像
既然都說寫 SQL 的目的是為了要取資料了,那麼不管 SQL 怎麼寫,最後都會取出一個包含多個欄位的資料表,可能會長得像這樣:
id | date | channel | device |
001 | 2023-01-01 | iPhone | |
002 | 2023-01-01 | FB | Google Pixel |
003 | 2023-01-02 | FB | iPhone |
無論是否經過資料清洗、整理,最終都會有欄位出現,而我們在寫 SQL 時,要確保知道最後我們取出來的資料會長怎樣,包含:有多少欄位、欄位裡面的值要是什麼才合理、預估的資料列數。
想清楚這件事的好處有很多,第一個就是你能即時發現錯誤,當出來的資料與你想像的不同,你當然會進一步的去檢查是不是有哪裡寫錯,而不會傻傻的直接拿來用,造成後續的分析與結論都出錯。
第二個好處就是能幫助自己想清楚撈這個資料要做什麼,以分析來說,這是很重要的一步。通常探索型分析可以接受我先撈撈看資料長怎樣的情況,但是到真的進入專案要分析時,就要避免還在東看看西看看的情況出現,要很清楚自己撈這個資料是為了看什麼,這除了可以讓 SQL 語法有更簡潔的機會,也能幫助自己在分析前就釐清整個思路。
小結語
其實我很推薦各個職能的角色都能學習 SQL 語言,第一是他並不難,第二是這在工作上是一個很加分的項目,想像一下學會 SQL 以後,連成效報告的數據都可以自己撈,而不用苦等分析師幫忙,這不是一件很棒的事嗎?而最後一個推薦原因,就是我發現真的很多公司都在推廣公司內職員使用 SQL,所以為了不要輸在求職起跑點,學會 SQL 還是必須的吧!
不過現在也比較少人在分享 SQL 的相關內容,所以我將在我的 IG 上開始日更 30 天的 SQL 教學內容,每一篇教學都會附上工作場景上實際會遇到的問題的練習題,邀請你追蹤我的 IG,每天只要 5 分鐘,一起用 30 天把 SQL 學起來!
IG 帳號:alvis.analyst,第一篇已經上線啦!快追起來。