SQL中的分析函數(shù)
本文將為您介紹SQL中的分析函數(shù),除了ORDER BY(按…排序)語句外,分析函數(shù)是一條查詢被執(zhí)行的操作,供您參考,希望對您學習SQL函數(shù)的使用能夠有所幫助。
所有合并、WHERE、GROUP BY、HAVING語句都是分析函數(shù)處理之前完成的。
因此,分析函數(shù)只出現(xiàn)在選擇目錄或ORDER BY(按…排序)語句中。
使用Over語句的情況 :
A. 等級函數(shù)如, ROW_NUMBER, DENSE_RANK, RANK, NTILE 使用 OVER(ORDER BY) 語句
example.
- view sourceprint?01 USE AdventureWorks;
- 02 GO
- 03 SELECT c.FirstName, c.LastName
- 04 ,ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number'
- 05 ,s.SalesYTD, a.PostalCode
- 06 FROM Sales.SalesPerson s
- 07 INNER JOIN Person.Contact c
- 08 ON s.SalesPersonID = c.ContactID
- 09 INNER JOIN Person.Address a
- 10 ON a.AddressID = c.ContactID
- 11 WHERE TerritoryID IS NOT NULL
- 12 AND SalesYTD <> 0;
- 13 GO
ROW_NUMBER() 增添順序序號,即時存在相同的也遞增序號
RANK()相同的數(shù)據(jù)序號相同,接下來為跳號(是跳躍排序,有兩個第二名時接下來就是第四名)
dense_rank()相同的數(shù)據(jù)序號相同,接下來順序遞增序號(是連續(xù)排序,有兩個第二名時仍然跟著第三名)
ntile(N)將記錄分為N組。
B. 聚合函數(shù)如, SUM,AVG,COUNT,MIN,MAX等使用OVER(PARTITION BY)語句
Example.
- 01 Copy Code
- 02 USE AdventureWorks;
- 03 GO
- 04 SELECT SalesOrderID, ProductID, OrderQty
- 05 ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total'
- 06 ,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Avg'
- 07 ,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Count'
- 08 ,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Min'
- 09 ,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Max'
- 10 FROM Sales.SalesOrderDetail
- 11 WHERE SalesOrderID IN(43659,43664);
- 12 GO
【編輯推薦】