校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > sql server如何利用開窗函數over()進行分組統計

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

熱門標簽:濮陽清豐400開頭的電話申請 真3地圖標注 疫情時期電話機器人 臺灣外呼系統軟件 地圖標注跑線下市場 南京怎么申請400這種電話 地圖標注可以編輯地名嗎 南通智能外呼系統怎么樣 樂昌電話機器人

這是一道常見的面試題,在實際項目中經常會用到。

需求:求出以產品類別為分組,各個分組里價格最高的產品信息。

實現過程如下:

declare @t table(
ProductID int,
ProductName varchar(20),
ProductType varchar(20),
Price int)

--測試數據

insert @t
select 1,'name1','P1',3 union all
select 2,'name2','P1',5 union all
select 3,'name3','P2',4 union all
select 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 ,OrderDate

From 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利用開窗函數進行分組統計的方法,謝謝大家的閱讀。

您可能感興趣的文章:
  • SQL中的開窗函數詳解可代替聚合函數使用
  • Sql Server 開窗函數Over()的使用實例詳解
  • SQL Server 2012 開窗函數
  • Oracle數據庫中SQL開窗函數的使用

標簽:馬鞍山 河北 通遼 廣安 陜西 阿里 福建 南京

巨人網絡通訊聲明:本文標題《sql server如何利用開窗函數over()進行分組統計》,本文關鍵詞  sql,server,如何,利用,開窗,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《sql server如何利用開窗函數over()進行分組統計》相關的同類信息!
  • 本頁收集關于sql server如何利用開窗函數over()進行分組統計的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    蜜臀av亚洲一区中文字幕| 国产精品麻豆网站| 欧美日精品一区视频| av电影在线观看不卡 | 色伊人久久综合中文字幕| 国产999精品久久久久久绿帽| 蜜桃视频在线一区| 久久精品99国产精品| 久久97超碰国产精品超碰| 精品伊人久久久久7777人| 久久超级碰视频| 国产精品一区二区三区乱码 | 久久一区二区视频| 久久精品一区蜜桃臀影院| 久久久久久久电影| 亚洲欧洲日产国产综合网| 亚洲欧美另类久久久精品2019| 亚洲少妇30p| 亚洲国产成人91porn| 日韩国产高清影视| 久久国产精品99精品国产| 国产精品亚洲成人| 91免费精品国自产拍在线不卡| 91视频你懂的| 91麻豆精品国产91久久久久| 欧美v日韩v国产v| 国产欧美一区二区三区在线看蜜臀| 国产日韩精品一区| 亚洲大片在线观看| 蓝色福利精品导航| 99精品久久免费看蜜臀剧情介绍| 色哟哟在线观看一区二区三区| 欧美电影一区二区三区| 久久婷婷成人综合色| 中文字幕亚洲电影| 日本欧美肥老太交大片| 东方欧美亚洲色图在线| 欧美剧情片在线观看| 国产日产欧美精品一区二区三区| 一区二区久久久久久| 精久久久久久久久久久| 欧美私人免费视频| 国产精品人人做人人爽人人添| 亚洲成人午夜影院| 成人国产精品视频| 精品久久免费看| 亚洲一区在线免费观看| 国产一区二区福利视频| 欧美日韩国产色站一区二区三区| 国产欧美一区二区三区网站| 奇米四色…亚洲| 在线一区二区三区四区| 日本一区二区三区电影| 日本aⅴ亚洲精品中文乱码| 91小视频在线观看| 精品成人在线观看| 日韩av一区二| 欧美私人免费视频| 亚洲欧美激情一区二区| 高清在线观看日韩| 精品国产乱码久久| 日本vs亚洲vs韩国一区三区二区| 97久久久精品综合88久久| 国产欧美精品国产国产专区 | 一区二区三区不卡视频| 成人精品亚洲人成在线| 久久一留热品黄| 久久99日本精品| 欧美电视剧免费全集观看| 亚洲午夜久久久久| 欧美亚洲免费在线一区| 一区2区3区在线看| 一本一本久久a久久精品综合麻豆| 国产人成一区二区三区影院| 久久99久久久欧美国产| 精品国产伦一区二区三区观看方式| 午夜精品福利视频网站| 欧美日韩mp4| 视频一区在线播放| 欧美一级爆毛片| 奇米影视一区二区三区| 日韩精品一区二区三区三区免费| 奇米影视一区二区三区| 久久久久久久久久久久久久久99| 久久国内精品视频| 国产午夜精品理论片a级大结局| 国产在线精品免费| 久久精品在线观看| 色悠久久久久综合欧美99| 亚洲午夜精品在线| 欧美成人bangbros| 国产精品系列在线播放| 综合自拍亚洲综合图不卡区| 色综合久久99| 麻豆91在线观看| 国产人久久人人人人爽| 99在线精品视频| 水野朝阳av一区二区三区| 26uuu国产电影一区二区| 国产成人亚洲综合a∨猫咪| 亚洲国产精品ⅴa在线观看| av在线不卡网| 日韩主播视频在线| 久久毛片高清国产| 91色.com| 久久99精品视频| 夜夜夜精品看看| 欧美大白屁股肥臀xxxxxx| 99久久免费精品高清特色大片| 亚洲精品欧美在线| 2021国产精品久久精品| 色综合色狠狠天天综合色| 理论电影国产精品| 亚洲免费毛片网站| 久久久久亚洲蜜桃| 欧美日韩久久一区二区| 国产成人亚洲综合a∨猫咪| 美女视频黄频大全不卡视频在线播放| 久久久久综合网| 欧美人与性动xxxx| 成人国产精品免费观看动漫| 免费日韩伦理电影| 亚洲视频图片小说| 欧美国产成人精品| 欧美一区二区在线视频| 波多野结衣的一区二区三区| 日本视频免费一区| 一区二区三区在线视频免费| 久久久久国产成人精品亚洲午夜| 欧美日韩精品系列| 91麻豆国产在线观看| 韩国欧美国产一区| 日韩国产欧美三级| 亚洲国产精品久久人人爱蜜臀| 国产欧美综合色| 欧美大黄免费观看| 欧美一级日韩免费不卡| 在线观看一区日韩| 色天使色偷偷av一区二区| 成人性生交大片免费看在线播放| 性感美女极品91精品| 亚洲影视在线观看| 亚洲另类在线制服丝袜| 国产精品无圣光一区二区| 国产日韩精品一区二区三区在线| 欧美精品一区男女天堂| 日韩一卡二卡三卡四卡| 日韩无一区二区| 日韩一区二区高清| 日韩视频123| 精品国产91亚洲一区二区三区婷婷| 正在播放一区二区| 欧美日韩精品一区二区三区| 欧美日韩久久一区二区| 欧美一区二区三区色| 91精品国产黑色紧身裤美女| 777a∨成人精品桃花网| 欧美日韩国产首页| 日韩三级电影网址| 久久这里只精品最新地址| 国产精品美日韩| 国产精品色哟哟| 亚洲丝袜精品丝袜在线| 一区二区三区免费看视频| 亚洲一区电影777| 亚洲风情在线资源站| 蜜臀av在线播放一区二区三区| 男人的天堂亚洲一区| 极品少妇一区二区三区精品视频| 国产一区二区精品在线观看| 成人18精品视频| 欧美在线观看一区| 日韩一区二区三区视频在线 | 欧美激情一区在线| 国产精品美女久久久久高潮| 国产精品午夜久久| 亚洲五月六月丁香激情| 免费观看成人鲁鲁鲁鲁鲁视频| 麻豆精品一二三| 成人黄色免费短视频| 91黄色免费看| 精品国产91乱码一区二区三区| 国产欧美日韩激情| 视频一区二区欧美| 成人在线视频一区| 欧美视频一区二区三区在线观看| 日韩欧美视频在线| 中文字幕一区二区日韩精品绯色| 亚洲综合一二三区| 国产在线视频不卡二| 色呦呦网站一区| 久久久一区二区三区捆绑**| 亚洲男人的天堂一区二区 | 2017欧美狠狠色| 亚洲一二三四区| 国产成人综合视频| 欧美久久久久久蜜桃| 国产精品青草综合久久久久99| 蜜臀av一区二区在线观看| 不卡一二三区首页|