掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
本文將為您介紹SQL中的分析函數(shù),除了ORDER BY(按…排序)語(yǔ)句外,分析函數(shù)是一條查詢被執(zhí)行的操作,供您參考,希望對(duì)您學(xué)習(xí)SQL函數(shù)的使用能夠有所幫助。

創(chuàng)新互聯(lián)于2013年成立,先為波密等服務(wù)建站,波密等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為波密企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
所有合并、WHERE、GROUP BY、HAVING語(yǔ)句都是分析函數(shù)處理之前完成的。
因此,分析函數(shù)只出現(xiàn)在選擇目錄或ORDER BY(按…排序)語(yǔ)句中。
使用Over語(yǔ)句的情況 :
A. 等級(jí)函數(shù)如, ROW_NUMBER, DENSE_RANK, RANK, NTILE 使用 OVER(ORDER BY) 語(yǔ)句
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() 增添順序序號(hào),即時(shí)存在相同的也遞增序號(hào)
RANK()相同的數(shù)據(jù)序號(hào)相同,接下來(lái)為跳號(hào)(是跳躍排序,有兩個(gè)第二名時(shí)接下來(lái)就是第四名)
dense_rank()相同的數(shù)據(jù)序號(hào)相同,接下來(lái)順序遞增序號(hào)(是連續(xù)排序,有兩個(gè)第二名時(shí)仍然跟著第三名)
ntile(N)將記錄分為N組。
B. 聚合函數(shù)如, SUM,AVG,COUNT,MIN,MAX等使用OVER(PARTITION BY)語(yǔ)句
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
【編輯推薦】
創(chuàng)建SQL函數(shù)的實(shí)例
SQL中一個(gè)很好用的日期格式化函數(shù)
SQL中返回計(jì)算表達(dá)式的函數(shù)
SQL中DATENAME函數(shù)的用法
SQL中循環(huán)語(yǔ)句的效果實(shí)例

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流