亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

Sql Server 開窗函數Over()的使用實例詳解

2024-08-31 01:05:22
字體:
來源:轉載
供稿:網友

利用over(),將統計信息計算出來,然后直接篩選結果集

declare @t table(ProductID int,ProductName varchar(20),ProductType varchar(20),Price int)insert @tselect 1,'name1','P1',3 union allselect 2,'name2','P1',5 union allselect 3,'name3','P2',4 union allselect 4,'name4','P2',4

查詢要求:查出每類產品中價格最高的信息

--做法一:找到每個組里,價格最大的值;然后再找出每個組里價格等于這個值的
--缺點:要進行一次join    

select t1.* from @t t1 join (select ProductType, max(Price) Price from @t group by ProductType) t2  on t1.ProductType = t2.ProductType where t1.Price = t2.Price order by ProductType

--做法二:利用over(),將統計信息計算出來,然后直接篩選結果集。
--over() 可以讓函數(包括聚合函數)與行一起輸出。 

 ;with cte as(select *, max(Price) over(partition by (ProductType)) MaxPrice from @t)select ProductID,ProductName,ProductType,Price from cte where Price = MaxPrice order by ProductType

-over() 的語法為:over([patition by ] <order by >)。需要注意的是,over() 前面是一個函數,如果是聚合函數,那么order by 不能一起使用。

--over() 的另一常用情景是與 row_number() 一起用于分頁。

現在來介紹一下開窗函數

窗口函數OVER()指定一組行,開窗函數計算從窗口函數輸出的結果集中各行的值。

開窗函數不需要使用GROUP BY就可以對數據進行分組,還可以同時返回基礎行的列和聚合列。 

1.排名開窗函數

ROW_NUMBER、DENSE_RANK、RANK、NTILE屬于排名函數。

排名開窗函數可以單獨使用ORDER BY 語句,也可以和PARTITION BY同時使用。

PARTITION BY用于將結果集進行分組,開窗函數應用于每一組。

ODER BY 指定排名開窗函數的順序。在排名開窗函數中必須使用ORDER BY語句。

例如查詢每個雇員的定單,并按時間排序

;WITH OrderInfo AS( SELECT ROW_NUMBER() OVER(PARTITION BY EmployeeID ORDER BY OrderDate) AS Number, OrderID,CustomerID, EmployeeID,OrderDate FROM Orders (NOLOCK) )SELECT Number,OrderID,CustomerID, EmployeeID ,OrderDateFrom OrderInfo WHERE Number BETWEEN 0 AND 10

窗口函數根據PARTITION BY語句按雇員ID對數據行分組,然后按照ORDER BY 語句排序,排名函數ROW_NUMBER()為每一組的數據分從1開始生成一個序號。

ROW_NUMBER()為每一組的行按順序生成一個唯一的序號

RANK()也為每一組的行生成一個序號,與ROW_NUMBER()不同的是如果按照ORDER BY的排序,如果有相同的值會生成相同的序號,并且接下來的序號是不連序的。例如兩個相同的行生成序號3,那么接下來會生成序號5。

DENSE_RANK()和RANK()類似,不同的是如果有相同的序號,那么接下來的序號不會間斷。也就是說如果兩個相同的行生成序號3,那么接下來生成的序號還是4。

NTILE (integer_expression) 按照指定的數目將數據進行分組,并為每一組生成一個序號。

2.聚合開窗函數

很多聚合函數都可以用作窗口函數的運算,如SUM,AVG,MAX,MIN。

聚合開窗函數只能使用PARTITION BY子句或都不帶任何語句,ORDER BY不能與聚合開窗函數一同使用。

例如,查詢雇員的定單總數及定單信息

 WITH OrderInfo AS(SELECT COUNT(OrderID) OVER(PARTITION BY EmployeeID) AS TotalCount,OrderID,CustomerID, EmployeeID,OrderDate FROM Orders (NOLOCK))SELECT OrderID,CustomerID, EmployeeID ,OrderDate,TotalCount From OrderInfo ORDER BY EmployeeID

如果窗口函數不使用PARTITION BY 語句的話,那么就是不對數據進行分組,聚合函數計算所有的行的值

 WITH OrderInfo AS ( SELECT COUNT(OrderID) OVER() AS Count,OrderID,CustomerID, EmployeeID,OrderDate FROM Orders (NOLOCK) )

總結

以上所述是小編給大家介紹的Sql Server 開窗函數Over()的使用實例詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MSSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久人成影片一区二区三区观看| 色伦专区97中文字幕| 国产欧美日韩高清| 中文字幕一区二区三区电影| 欧美日韩一区二区三区| 中文字幕亚洲第一| 丝袜美腿精品国产二区| 亚洲精品一区中文字幕乱码| 欧美性少妇18aaaa视频| 成人乱色短篇合集| 91av在线播放| 亚洲国产成人精品一区二区| 国产精品免费观看在线| 91av网站在线播放| 国产午夜精品免费一区二区三区| 欧美中文字幕第一页| 久久久亚洲成人| 精品小视频在线| 中文字幕日韩欧美在线| 久久九九全国免费精品观看| 亚洲欧美一区二区精品久久久| 日韩综合视频在线观看| 欧美视频13p| 亚洲自拍欧美色图| 国产综合色香蕉精品| 日韩激情在线视频| 4p变态网欧美系列| 久久男人资源视频| 美女久久久久久久| 久久久中文字幕| 欧美日韩电影在线观看| 91精品美女在线| 国产拍精品一二三| 国产精品27p| 91中文在线观看| 国产精品视频网| 久久精品亚洲94久久精品| 欧美最顶级丰满的aⅴ艳星| 国产一区二区日韩精品欧美精品| 国产国语刺激对白av不卡| 日韩av一区二区在线| 米奇精品一区二区三区在线观看| 美女av一区二区| 亚洲国产精品va在线观看黑人| 北条麻妃一区二区三区中文字幕| 亚洲最大的免费| 国产精品视频网址| 日本久久精品视频| 精品久久在线播放| 亚洲精品一区二区三区不| 97激碰免费视频| 深夜福利国产精品| 日韩在线小视频| 欧美高清在线观看| 欧美精品一区二区三区国产精品| 国产丝袜一区二区三区免费视频| 亚洲国产成人精品一区二区| 亚洲欧美日韩一区二区三区在线| 91av在线免费观看| 国产精品一区二区av影院萌芽| 久色乳综合思思在线视频| 8x拔播拔播x8国产精品| 亚洲国内精品视频| 国产日韩在线观看av| 91精品视频免费| 午夜剧场成人观在线视频免费观看| 欧美国产日韩二区| 久久国产精品电影| 午夜免费日韩视频| 欧美日韩亚洲精品一区二区三区| 亚洲国产精品高清久久久| 韩国精品美女www爽爽爽视频| 欧美一区亚洲一区| 日韩福利伦理影院免费| 亚洲免费福利视频| 久久亚洲国产成人| 一区二区av在线| 亚洲一区美女视频在线观看免费| 伊人久久久久久久久久| 青草热久免费精品视频| 色777狠狠综合秋免鲁丝| 亚洲毛片在线观看| 成人欧美一区二区三区黑人孕妇| 亚洲日本欧美日韩高观看| 亚州精品天堂中文字幕| 理论片在线不卡免费观看| 国产日韩精品视频| 久久综合久久八八| 国产91九色视频| 欧美高清激情视频| 亚洲性夜色噜噜噜7777| 在线观看久久久久久| 亚洲石原莉奈一区二区在线观看| 最近2019年手机中文字幕| 98精品在线视频| 久久夜精品va视频免费观看| www.久久久久久.com| 欧美久久久精品| 国外成人性视频| 亚洲一区二区三区成人在线视频精品| 91精品久久久久久久久青青| 久久精品亚洲精品| 亚洲精品中文字幕av| 久久中文字幕在线| 成人看片人aa| 91探花福利精品国产自产在线| 国产精品久久久999| 中文欧美日本在线资源| 久久久久久这里只有精品| 97国产在线观看| 国产精品久久久久一区二区| 欧美日韩在线视频一区二区| 136fldh精品导航福利| 亚洲护士老师的毛茸茸最新章节| 国产精品视频yy9099| 久99九色视频在线观看| 亚洲香蕉在线观看| 国内精品小视频在线观看| 色婷婷av一区二区三区在线观看| 国产视频观看一区| 久久久人成影片一区二区三区观看| 亚洲精美色品网站| 成人444kkkk在线观看| 国产精品一区二区性色av| 永久免费看mv网站入口亚洲| 亚洲最大福利视频| 成年无码av片在线| 亚洲国内精品视频| 欧美精品久久久久久久免费观看| 亚洲一区二区在线播放| 欧美成人午夜剧场免费观看| 富二代精品短视频| 欧美久久精品午夜青青大伊人| 中文字幕日韩在线播放| 九九九热精品免费视频观看网站| 久久艹在线视频| 国产一区二区久久精品| 久久人人爽人人爽人人片av高清| 精品自在线视频| 57pao成人永久免费视频| 538国产精品一区二区在线| 久久精品国产v日韩v亚洲| 日韩精品视频中文在线观看| 成人在线中文字幕| 亚洲自拍中文字幕| 国产精品久久久久国产a级| 国产成人aa精品一区在线播放| 国产精品高潮呻吟视频| 欧美国产在线电影| 久久视频免费在线播放| 色阁综合伊人av| 亚洲午夜精品久久久久久性色| 欧美精品中文字幕一区| 国产精品一区二区三区在线播放| 国产视频久久久| 97成人精品视频在线观看| 日本一区二区三区在线播放| 日韩av电影国产| 久久国产色av| 在线播放日韩av| 日本精品视频在线| 国产精品黄色影片导航在线观看| 中文综合在线观看| 精品国产户外野外|