今天是第 29 天。
第一天時提到要寫讀書心得,是因為想起了一年多前,曾在書店大概翻過的書 《SQL 達人的工作現場攻略筆記》。當初的我,想著要是早點看到這本書,就能減短摸索的陣痛期了。現在為了寫心得再次翻開本書時,仍然覺得自己還有很多可以學習的知識 …
本書介紹可分成兩大部分,一是實用語法的介紹,如 CASE、視窗函數 OVER…PARTITION BY…與更多用法)、HAVING 等等。這些語法雖然不算很難,但是書內應用這些語法在很多不同模式的問題上,會讓你想著「啊!原來可以這樣用 / 這樣使用更合適」。
Ex. 要選出與「過去最接近一年」年營收相同的年度,資料如下:
| year | sale | 
|---|---|
| 1990 | 50 | 
| 1992 | 50 | 
| 1993 | 52 | 
| 1994 | 55 | 
| 1997 | 55 | 
預期結果為
| year | sale | 
|---|---|
| 1992 | 50 | 
| 1997 | 55 | 
需要符合條件有:
除了撰寫關聯子查詢,書中也教你怎麼用視窗函數達成此結果:
SELECT [year], current_sale
FROM (
    SELECT [year], sale AS current_sale,
        SUM(sale) OVER (ORDER BY [year] ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS pre_sale
    FROM Sales
) TMP
WHERE current_sale = pre_sale
ORDER BY [year]
(ORDER BY [year] ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING 指的是以年度 (順向) 排序,且排序的框架限定為先前一列)
突破了我對視窗函數的想像 (比較常用的大概就是 OVER…PARTITION BY… 而已)。
另外也有簡單介紹 SQL 效能的調整、好讀的寫法 (類似 Day 26 的內容),以及第二部份對於 SQL 的一些背景知識。
就如本書前言所說,適合「實務上撰寫 SQL 程式達半年至一年左右的讀者」閱讀。
SQL 達人的工作現場攻略筆記
作者: Mick
譯者: 許郁文
出版: 碁峰資訊
出版日期: 2019 年 10 月
ISBN: 978-986-502-273-0