iT邦幫忙

2022 iThome 鐵人賽

DAY 29
0
自我挑戰組

C# 和 SQL 探索之路系列 第 29

Day 29: 讀書心得: SQL 達人的工作現場攻略筆記

  • 分享至 

  • xImage
  •  

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

需要符合條件有:

  1. 比基準點 (目前的年度) 還早的年度
  2. 滿足條件 1 且是所有年度之中,年份最大的一年

除了撰寫關聯子查詢,書中也教你怎麼用視窗函數達成此結果:

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


上一篇
Day 28: 寫出好讀的 SQL
下一篇
Day 30: 讀書心得: 成為卓越程式設計師的 38 項必修法則 & 後記
系列文
C# 和 SQL 探索之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言