延續前一篇的討論:
SQL Server:認識「次序函數(Window Ranking Functions)」(1)
認識 PARTITION BY 引數
/* PARTITION BY 引數 將查詢結果集分成幾個資料分割。 視窗函數會分別套用至每個資料分割,並且針對每個資料分割重新開始計算。 */
-- 依據 UnitPrice 由高到低來排序 USE Northwind GO SELECT ProductID, ProductName,UnitPrice, CategoryID FROM Products ORDER BY UnitPrice DESC; GO
-- 01_依據 UnitPrice 由高到低來排序
-- EX1:認識 ROW_NUMBER() 次序函數與 PARTITION BY 引數 -- 因為沒有指定 PARTITION BY 子句,ROW_NUMBER() 次序函數應用到在結果集的所有資料列。 SELECT ProductID, ProductName, UnitPrice, CategoryID, ROW_NUMBER() OVER( ORDER BY UnitPrice DESC) N'RowNumber' FROM Products; GO
-- 02_因為沒有指定 PARTITION BY 子句,ROW_NUMBER() 次序函數應用到在結果集的所有資料列
-- ROW_NUMBER() 次序函數,使用 PARTITION BY 引數依據資料行 CategoryID 分割查詢結果集。 SELECT ProductID, ProductName, UnitPrice, CategoryID, ROW_NUMBER() OVER( PARTITION BY CategoryID ORDER BY UnitPrice DESC) N'RowNumber' FROM Products; GO
-- 03_ROW_NUMBER() 次序函數,使用 PARTITION BY 引數依據資料行 CategoryID 分割查詢結果集
-- EX2:認識 RANK() 次序函數與 PARTITION BY 引數 -- 因為沒有指定 PARTITION BY 子句,RANK() 次序函數應用到在結果集的所有資料列。 SELECT ProductID, ProductName, UnitPrice, CategoryID, RANK() OVER( ORDER BY UnitPrice DESC) N'Rank' FROM Products; GO
-- 04_因為沒有指定 PARTITION BY 子句,RANK() 次序函數應用到在結果集的所有資料列
-- RANK() 次序函數,使用 PARTITION BY 引數依據資料行 CategoryID 分割查詢結果集。 SELECT ProductID, ProductName, UnitPrice, CategoryID, RANK() OVER( PARTITION BY CategoryID ORDER BY UnitPrice DESC) N'Rank' FROM Products; GO
-- 05_RANK() 次序函數,使用 PARTITION BY 引數依據資料行 CategoryID 分割查詢結果集
-- EX3:認識 DENSE_RANK() 次序函數與 PARTITION BY 引數 -- 因為沒有指定 PARTITION BY 子句,DENSE_RANK() 次序函數應用到在結果集的所有資料列。 SELECT ProductID, ProductName, UnitPrice, CategoryID, DENSE_RANK() OVER( ORDER BY UnitPrice DESC) N'DenseRank' FROM Products; GO
-- 06_因為沒有指定 PARTITION BY 子句,DENSE_RANK() 次序函數應用到在結果集的所有資料列
-- DENSE_RANK() 次序函數,使用 PARTITION BY 引數依據資料行 CategoryID 分割查詢結果集。 SELECT ProductID, ProductName, UnitPrice, CategoryID, DENSE_RANK() OVER( PARTITION BY CategoryID ORDER BY UnitPrice DESC) N'DenseRank' FROM Products; GO
-- 07_DENSE_RANK() 次序函數,使用 PARTITION BY 引數依據資料行 CategoryID 分割查詢結果集
-- EX4:認識 NTILE() 次序函數與 PARTITION BY 引數 -- 因為沒有指定 PARTITION BY 子句,NTILE() 次序函數應用到在結果集的所有資料列。 -- (1-26), (27-52), (53-77) SELECT ProductID, ProductName, UnitPrice, CategoryID, NTILE(3) OVER( ORDER BY UnitPrice DESC) N'Ntile' FROM Products; GO
-- 08_因為沒有指定 PARTITION BY 子句,NTILE() 次序函數應用到在結果集的所有資料列
-- NTILE() 次序函數,使用 PARTITION BY 引數依據資料行 CategoryID 分割查詢結果集。 SELECT ProductID, ProductName, UnitPrice, CategoryID, NTILE(3) OVER( PARTITION BY CategoryID ORDER BY UnitPrice DESC) N'Ntile' FROM Products; GO
-- 09_NTILE() 次序函數,使用 PARTITION BY 引數依據資料行 CategoryID 分割查詢結果集
參考資料
SQL Server:認識「次序函數(Window Ranking Functions)」(1)
http://sharedderrick.blogspot.tw/2012/10/sql-serverwindow-ranking-functions1.html


+%E6%AC%A1%E5%BA%8F%E5%87%BD%E6%95%B8%E6%87%89%E7%94%A8%E5%88%B0%E5%9C%A8%E7%B5%90%E6%9E%9C%E9%9B%86%E7%9A%84%E6%89%80%E6%9C%89%E8%B3%87%E6%96%99%E5%88%97.png)
+%E6%AC%A1%E5%BA%8F%E5%87%BD%E6%95%B8%EF%BC%8C%E4%BD%BF%E7%94%A8+PARTITION+BY+%E5%BC%95%E6%95%B8%E4%BE%9D%E6%93%9A%E8%B3%87%E6%96%99%E8%A1%8C+CategoryID+%E5%88%86%E5%89%B2%E6%9F%A5%E8%A9%A2%E7%B5%90%E6%9E%9C%E9%9B%86.png)
+%E6%AC%A1%E5%BA%8F%E5%87%BD%E6%95%B8%E6%87%89%E7%94%A8%E5%88%B0%E5%9C%A8%E7%B5%90%E6%9E%9C%E9%9B%86%E7%9A%84%E6%89%80%E6%9C%89%E8%B3%87%E6%96%99%E5%88%97.png)
+%E6%AC%A1%E5%BA%8F%E5%87%BD%E6%95%B8%EF%BC%8C%E4%BD%BF%E7%94%A8+PARTITION+BY+%E5%BC%95%E6%95%B8%E4%BE%9D%E6%93%9A%E8%B3%87%E6%96%99%E8%A1%8C+CategoryID+%E5%88%86%E5%89%B2%E6%9F%A5%E8%A9%A2%E7%B5%90%E6%9E%9C%E9%9B%86.png)
+%E6%AC%A1%E5%BA%8F%E5%87%BD%E6%95%B8%E6%87%89%E7%94%A8%E5%88%B0%E5%9C%A8%E7%B5%90%E6%9E%9C%E9%9B%86%E7%9A%84%E6%89%80%E6%9C%89%E8%B3%87%E6%96%99%E5%88%97.png)
+%E6%AC%A1%E5%BA%8F%E5%87%BD%E6%95%B8%EF%BC%8C%E4%BD%BF%E7%94%A8+PARTITION+BY+%E5%BC%95%E6%95%B8%E4%BE%9D%E6%93%9A%E8%B3%87%E6%96%99%E8%A1%8C+CategoryID+%E5%88%86%E5%89%B2%E6%9F%A5%E8%A9%A2%E7%B5%90%E6%9E%9C%E9%9B%86.png)
+%E6%AC%A1%E5%BA%8F%E5%87%BD%E6%95%B8%E6%87%89%E7%94%A8%E5%88%B0%E5%9C%A8%E7%B5%90%E6%9E%9C%E9%9B%86%E7%9A%84%E6%89%80%E6%9C%89%E8%B3%87%E6%96%99%E5%88%97.png)
+%E6%AC%A1%E5%BA%8F%E5%87%BD%E6%95%B8%EF%BC%8C%E4%BD%BF%E7%94%A8+PARTITION+BY+%E5%BC%95%E6%95%B8%E4%BE%9D%E6%93%9A%E8%B3%87%E6%96%99%E8%A1%8C+CategoryID+%E5%88%86%E5%89%B2%E6%9F%A5%E8%A9%A2%E7%B5%90%E6%9E%9C%E9%9B%86.png)
沒有留言:
張貼留言