今天是第 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