搜尋
tee / insights
LEARNING / SQLHOME
DATA → QUERY → RESULT

SQL語法地圖

從資料如何改變來理解SQL。切換Snowflake / BigQuery,以相同順序比較相同概念。

SQL方言

SQL全貌

涵蓋SELECT查詢與分析的基本語法。依目的或語法名稱尋找,比較相同輸入的結果。

建立輸入

指定來源

FROM指定要處理的資料表或結果。

命名 / 巢狀查詢

WITH與FROM中的子查詢可表達相同的中間結果。

橫向連接:保留哪些列?

符合 / 左側全部 / 兩側全部 / 所有組合。

連接條件 / 連接後篩選

LEFT JOIN的條件位置會改變保留的列。

巢狀值展開成列

將複合值的元素展開,增加列數。

篩選列

何時篩選?

WHERE在彙總前、HAVING在彙總後、QUALIFY在window後。

彙總列

N列 → 1值

依要計數的對象與摘要的作用選擇。

彙總單位 / 去重

GROUP BY建立彙總單位;DISTINCT移除所選輸出列的重複。

保留列數分析

合併列 / 附加到各列

Aggregate:N列→每組1列。Window:N列→N列。

排名:如何處理同分?

流水號 / 同名次後跳號 / 同名次後不跳號。

進階:列位置 / 值範圍

ROWS依列位置;RANGE依排序值定義範圍。

建立值

比較 / 組合條件

比較回傳TRUE、FALSE或NULL,再用邏輯運算組合。

判斷缺值 / 補值

與NULL的等號比較為未知,應用IS NULL判斷。

通用分支 / 二選一簡寫

CASE支援多條件,IF / IFF簡寫兩種結果。

一般轉型 / 安全轉型

無法轉換的值:CAST報錯,安全版回傳NULL。

去除符號 / 四捨五入

ABS取絕對值,ROUND取指定小數位。

轉換 / 擷取 / 串接

對同一字串套用四種操作。

現在 / 加算 / 差 / 截斷

作用相同,引數順序與單位語法不同。

巢狀值 / SQL字串

即使都顯示7,回傳型態仍不同。

重組集合

縱向組合:如何處理重複?

相同A、B:保留重複 / 去重 / 共有 / 僅左側。

進階:依欄名對應

位置不同仍依相同欄名對應。

整理結果

整理最終結果

去重 → 排序 → 跳過開頭 → 取得上限筆數。