国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

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

sql server如何利用開窗函數over()進行分組統計

2024-08-31 01:03:44
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了sql server利用開窗函數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,TotalCountFrom OrderInfo ORDER BY EmployeeID 

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

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

以上就是本文的全部內容,希望大家可以學會sql server利用開窗函數進行分組統計的方法,謝謝大家的閱讀。



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产美女av在线| 天堂在线中文资源| 国产精彩视频在线观看免费蜜芽| аⅴ成人天堂中文在线| 精品无人乱码| 精品视频在线一区二区| 四虎网站在线观看| 中文在线视频| 狠狠干在线视频| 国产精品yjizz视频网一二区| 中文av资源在线| 丁香视频五月| 精品亚洲成a人片在线观看| 日本黄在线观看| 国产高潮又爽又无遮挡又免费| 99久久99热久久精品免费看| 激情五月色综合亚洲小说| 国产精品爱久久久久久久小说 | 精品国产免费第一区二区| 99在线欧洲视频| 欧美日韩视频精品一区二区| 国产天堂素人系列在线视频| 亚洲一道本在线| 国产一级黄色| 亚洲成av人影片在线观看 | 日本精品一区二区三区在线播放| 国产精品亚洲色图| 亚洲综合激情六月婷婷在线观看| 尤物视频在线观看| 久久一本精品| 天堂中文在线观看| 国产成人精品自线拍| www.三区| 国产福利在线观看| 国产精品探花在线| 日本18视频网站| 99热免费在线| 92国产在线视频| 国产黄色一级电影| 午夜视频99| 国产性一级片| 国产青草视频在线观看视频| 国产在线视频精品视频免费看| 国产xxxxx| 国产成人精品实拍在线| 国产精品久久精品牛牛影视| 中文字幕专区| 天堂在线亚洲| 五月婷婷丁香激情| 国产老肥熟xxxx在线观看| 久蕉依人在线视频| 国内精品免费一区二区三区| 激情综合丁香| 国产一级片麻豆| 国产二区三区四区| 伊人影院蕉久影院在线播放| 国产成人天天5g影院| 国产粉嫩一区二区三区在线观看| 国产天堂在线| 永久免费在线观看| 九九热视频在线| 中文字幕在线影视资源| 国产极品美女到高潮| 777电影在线观看| 18激情网站| 日本视频三区| 五月伊人六月| 亚洲视频在线观看不卡| 欧美日韩一区二区三区视视频| 九九热免费在线视频| 国产视频二区在线观看| 精精国产xxxx视频在线| 九九视频精品在线| 国产福利视频在线| 黄色国产网站在线播放| 精品美女视频在线观看免费软件| 亚洲精品成人a| 日本中文字幕在线观看| 精品极品三级久久久久| wwwww在线观看免费视频| 国产免费黄网站| 国产高清在线| 国产美女一区视频| 91黄色在线| 日本中文字幕在线2020| 日韩精品免费一区二区| 国产卡二和卡三的视频| 亚洲欧美久久婷婷爱综合一区天堂| 狠狠色综合久久婷婷| 精品国产一区二区三区不卡在线 | 精品视频三区| 国产在线精品一区二区不卡| 一本大道久久精品| 精品成人免费自拍视频| 国产视频1区| 国产免费电影网站入口| sese一区| 美女被人操视频在线观看| 在线色视频观看| 国产精品久久久久白浆| 国产一区二区三区福利| 久久亚洲国产成人亚| 爱福利在线视频| 牛牛精品视频在线| www.国产精| 久热国产视频| 青青草免费观看免费视频在线| 在线视频婷婷| 四虎成人免费| 日本成a人片在线观看| 亚洲日本一区二区三区在线观看| 国产xxx在线| 夜夜操com| 尤物在线精品视频| jizz亚洲大全| 欧美一级久久久久久久久大| 狠狠干在线视频| 中文字幕免费中文| 在线视频中文字幕| 日本不卡视频一区二区| 99视频免费| 国产香蕉在线| 午夜在线不卡| 91caoporn在线| 在线免费黄色毛片| 九九在线视频| 国产精彩视频在线观看免费蜜芽| 国产精品186在线观看在线播放| 国产黄在线看| xxxx视频在线| 国产精品日日爱| www狠狠操| 国产高清免费视频| 美女网站在线观看| 18av在线视频| 大香伊人久久| 永久免费av片在线观看全网站| 另类高清dbsm日本tvav| 91桃色在线| 国产一级性片| 免费看av大片| 亚洲wwwwww| 国产黄视频在线观看| 国产在线观看av| jizz在线免费观看| 在线午夜影院| 国产精品欧美韩国日本久久| 麻豆国产视频| www.av在线视频| 在线观看免费观看在线91| 中文字幕一区二区三区免费视频| 伊人伊人av电影| 中文视频在线| 伊人免费在线| 精品电影在线| 在线中文视频| 99色在线观看| av小说在线| 在线观看的av| 在线āv视频| 香蕉视频在线观看网站| 精灵使的剑舞无删减版在线观看| 国产一级视频| 国产一级片在线| 国产精品久久久久一区二区国产| 国产在线视频网站| 免费看黄视频网站| 超碰免费97在线观看| 国产中文第一页| 国产系列在线观看| 国产精品久久在线| 精品欧美日韩一区二区| 国产成人精品18| 一区二区免费播放| 日本在线观看| 国产自产视频| 国产系列电影在线播放网址| 中文字幕在线播放网址| 国产特级淫片免费看| 国产对白在线| 亚洲精品在线播放视频| 在线中文字幕观看| 青青草免费在线视频| 最好看更新中文字幕| 在线天堂av| 久久精品蜜桃| 国产区在线看| 日本天堂影院在线视频| 开心丁香婷婷深爱五月| 国产三级在线免费观看| 伊人影院在线播放| 九九热在线免费视频| 国产网红在线观看| 亚洲国产aⅴ精品| 国产毛片视频| 91嫩草在线播放| 91麻豆精品国产91久久| 小说区乱图片区| 国产黄色在线看| 成年人在线观看|