婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

sql server如何利用開窗函數(shù)over()進行分組統(tǒng)計

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

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

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

實現(xiàn)過程如下:

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

--測試數(shù)據(jù)

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(),將統(tǒng)計信息計算出來,然后直接篩選結果集。
--over() 可以讓函數(shù)(包括聚合函數(shù))與行一起輸出。

;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() 前面是一個函數(shù),如果是聚合函數(shù),那么order by 不能一起使用。
--over() 的另一常用情景是與 row_number() 一起用于分頁。

現(xiàn)在來介紹一下開窗函數(shù)。

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

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

1.排名開窗函數(shù)

ROW_NUMBER、DENSE_RANK、RANK、NTILE屬于排名函數(shù)。

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

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

ODER BY 指定排名開窗函數(shù)的順序。在排名開窗函數(shù)中必須使用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

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

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

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

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

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

2.聚合開窗函數(shù)

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

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

例如,查詢雇員的定單總數(shù)及定單信息

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 

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

WITH OrderInfo AS

(

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

)

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

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

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

巨人網(wǎng)絡通訊聲明:本文標題《sql server如何利用開窗函數(shù)over()進行分組統(tǒng)計》,本文關鍵詞  sql,server,如何,利用,開窗,;如發(fā)現(xiàn)本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《sql server如何利用開窗函數(shù)over()進行分組統(tǒng)計》相關的同類信息!
  • 本頁收集關于sql server如何利用開窗函數(shù)over()進行分組統(tǒng)計的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久国产精品99久久人人澡| 91精品欧美久久久久久动漫| 亚洲日本在线看| 欧美一区二区三区公司| 91免费观看视频在线| 国内久久精品视频| 视频在线在亚洲| 亚洲不卡av一区二区三区| 综合久久国产九一剧情麻豆| 久久亚洲春色中文字幕久久久| 欧美精品在线观看播放| 欧美伊人久久大香线蕉综合69| 成人激情小说网站| 国产99久久久国产精品潘金 | 性做久久久久久| 国产精品福利电影一区二区三区四区| 欧美成人a∨高清免费观看| 日本高清无吗v一区| 久久精品国产一区二区| 亚洲午夜久久久久久久久电影院 | 亚洲精品精品亚洲| 亚洲精品一线二线三线无人区| 一本色道综合亚洲| 国产精品亚洲午夜一区二区三区| 日韩国产欧美在线视频| 一区二区视频免费在线观看| 国产欧美视频在线观看| 91精品国产91久久久久久一区二区| 成人黄色软件下载| 国产精品一区二区视频| 久久激情综合网| 日韩精品一区第一页| 亚洲一区二区在线播放相泽| 91精品国产高清一区二区三区| 国产大片一区二区| 午夜精品成人在线| 欧美国产乱子伦| 国产精品私人自拍| 国产欧美精品一区| 久久精品视频在线免费观看| 亚洲精品在线电影| 精品精品国产高清一毛片一天堂| 91精品国产91综合久久蜜臀| 777午夜精品免费视频| 欧美日韩精品一区二区三区蜜桃| 日本韩国欧美在线| 欧美性大战久久久久久久| 欧美在线999| 欧美日韩精品一区视频| 成人av网址在线观看| 成人免费电影视频| 成人黄色网址在线观看| 99热这里都是精品| 91亚洲精华国产精华精华液| 91在线porny国产在线看| 国产在线播放一区三区四| 成人免费观看视频| 91尤物视频在线观看| 一本在线高清不卡dvd| 色综合天天综合色综合av| 91成人免费在线视频| 欧美日本高清视频在线观看| 91精品国产福利在线观看| 精品日本一线二线三线不卡| 国产亚洲一区二区三区| 国产精品久久久久婷婷二区次| 国产精品国产精品国产专区不片| 中文字幕一区二区不卡| 亚洲成人av一区| 另类小说色综合网站| 国产成人免费在线观看| 一本高清dvd不卡在线观看| 欧美日韩一区二区欧美激情| 精品少妇一区二区三区视频免付费 | 日韩欧美中文一区| 久久久九九九九| 亚洲欧洲国产专区| 日本在线观看不卡视频| 国产成人av电影在线播放| 在线观看国产91| 欧美视频在线观看一区| 久久久亚洲精品石原莉奈| 中文字幕一区二区三区在线观看 | 欧美一级久久久久久久大片| 久久精品免费在线观看| 亚洲欧美另类在线| 紧缚奴在线一区二区三区| 成人精品国产福利| 9191久久久久久久久久久| 国产日本欧洲亚洲| 日韩专区一卡二卡| 91香蕉国产在线观看软件| 精品国产乱码久久久久久图片 | 亚洲欧美一区二区三区国产精品 | 6080亚洲精品一区二区| 国产精品午夜在线观看| 日韩经典一区二区| 91丨porny丨最新| 久久午夜羞羞影院免费观看| 亚洲成av人**亚洲成av**| 成人高清免费观看| 精品久久久久久无| 日韩精品国产精品| 99久久99久久精品免费看蜜桃| 欧美日韩国产另类不卡| 欧美不卡在线视频| 亚洲国产成人精品视频| 99riav一区二区三区| 国产亚洲一区字幕| 久久精品国产99久久6| 在线电影一区二区三区| 亚洲一卡二卡三卡四卡| 色视频欧美一区二区三区| 国产精品久久久久影院色老大| 国产一区二三区| 精品日韩在线观看| 精品一二线国产| 欧美成人一区二区三区在线观看| 日韩不卡手机在线v区| 3atv在线一区二区三区| 婷婷综合在线观看| 911精品国产一区二区在线| 亚洲成a人在线观看| 欧美优质美女网站| 亚洲成人高清在线| 91精品国产全国免费观看| 日韩在线播放一区二区| 欧美精品日韩一本| 日欧美一区二区| 日韩一卡二卡三卡| 黑人巨大精品欧美黑白配亚洲| 精品国产乱码久久久久久牛牛| 蜜桃视频在线一区| 欧美精品少妇一区二区三区| 日本不卡视频在线| 欧美精品一区二区在线播放| 国产精品自拍一区| 国产精品美女视频| 91免费看视频| 亚洲图片欧美视频| 欧美一级片在线| 国产精品资源站在线| 国产精品欧美极品| 欧美日韩一区高清| 蜜桃久久精品一区二区| 久久久99久久精品欧美| jizz一区二区| 天堂影院一区二区| 欧美福利电影网| 韩国精品主播一区二区在线观看 | 一本久久a久久精品亚洲| 一区二区在线观看免费视频播放| 在线播放日韩导航| 国产一区999| 亚洲精品五月天| 日韩一区二区在线观看| 成人黄色av电影| 天堂久久久久va久久久久| 久久久亚洲精华液精华液精华液| 成人一区二区在线观看| 亚洲一级二级三级| 久久先锋影音av| 欧美视频自拍偷拍| 日韩成人伦理电影在线观看| 国产欧美一区二区三区网站 | 欧美日韩大陆一区二区| 日本一道高清亚洲日美韩| 国产欧美日韩麻豆91| 欧美午夜精品一区二区蜜桃| 国内精品久久久久影院薰衣草| 亚洲丝袜美腿综合| 日韩欧美另类在线| 日本韩国欧美三级| 成人一级视频在线观看| 亚洲永久精品国产| 国产亚洲欧美日韩日本| 777xxx欧美| 色综合久久久久综合99| 国产一区二区三区在线观看精品| 一区二区三区精品| 国产农村妇女精品| 精品国产乱码久久久久久浪潮| 欧美日韩一级片网站| 99精品久久只有精品| 国产福利一区二区三区视频在线| 国产精品美女www爽爽爽| 欧美日本免费一区二区三区| 国产成人av福利| 五月激情综合网| 亚洲麻豆国产自偷在线| 国产精品成人免费| 久久精品欧美日韩| 精品国产91洋老外米糕| 日韩一区二区三区视频在线| 欧美无乱码久久久免费午夜一区| 色综合天天狠狠| 色综合网站在线| 91丨九色丨尤物| 国产精品亚洲а∨天堂免在线| 国模一区二区三区白浆|