OVER() 子句是Window Function的核心組成部分,用於在查詢結果集中定義一個「窗口」,使聚合函數或排名函數能夠在不改變原始數據結構的情況下,對特定資料進行計算。常搭配PARTITION BY將數據劃分成多個分群(類似GROUP BY,但不改變資料的結構、粒度),讓Window Function只在各自的分區內運行。
▌MS SQL SERVER 建立範例資料表
▌SUM() + OVER ()
1. 計算薪資總額
2. 累計薪資
3. 計算部門內薪資總額
▌排名
1. ROW_NUMBER() 為每行生成唯一的行號,按照指定排序。
2. RANK() 為每行生成排名,重複值有相同排名,後續排名會跳號。
3. DENSE_RANK() 與 RANK() 類似,但後續排名不跳號。
▌AVG() & COUNT()
- 使用 AVG() 計算部門內平均薪資
- 使用 COUNT() 計算部門內員工數
▌PERCENT_RANK() : 計算每個員工在其部門內的薪資 百分比 排名。
▌CUME_DIST(): 計算每個員工在其部門內的薪資累積 分布。
▌NTILE(n): 將每個部門的員工薪水劃分為n等分。
▌VAR & STDEV 計算每個部門內薪資的變異數和 標準差 。
以下為本 練習題 的檔案(持續增加中),想拿資料作練習的朋友可以點下單連結,下載連結會寄至您提供的Email喔! 目前資源都是免費的,當然也歡迎您輸入金額小額贊助我們喔!
謝謝您花時間將此篇文章讀完,若覺得對您有幫助可以幫忙按個讚、分享來或是珍藏喔!也歡迎Follow我的Threads/ FB,持續追蹤生產力工具、商業分析、商業英文的實用範例,提升自己的職場力喔!