欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用

 在沒(méi)學(xué)習(xí)開(kāi)窗函數(shù)之前,我們都知道,用了分組之后,查詢字段就只能是分組字段和聚合的字段,這帶來(lái)了極大的不方便,有時(shí)我們查詢時(shí)需要分組,又需要查詢不分組的字段,每次都要又到子查詢,這樣顯得sql語(yǔ)句復(fù)雜難懂,給維護(hù)代碼的人帶來(lái)很大的痛苦,然而開(kāi)窗函數(shù)出現(xiàn)了,曙光也來(lái)臨了。如果要想更具體了解開(kāi)窗函數(shù),請(qǐng)看書《程序員的SQL金典》,開(kāi)窗函數(shù)在MySQL不能使用。

10年積累的網(wǎng)站設(shè)計(jì)、成都網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有鉛山免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

       開(kāi)窗函數(shù)與聚合函數(shù)一樣,都是對(duì)行的集合組進(jìn)行聚合計(jì)算。它用于為行定義一個(gè)窗口(這里的窗口是指運(yùn)算將要操作的行的集合),它對(duì)一組值進(jìn)行操作,不需要使用group by語(yǔ)句對(duì)數(shù)據(jù)進(jìn)行分組,能夠在同一行中同時(shí)返回基礎(chǔ)行的列和聚合列。定義看不懂不要緊,會(huì)用就行。

       舉個(gè)簡(jiǎn)單例子 查詢每個(gè)工資小于5000的員工信息(姓名,城市 年齡 薪水),并且顯示小于5000的員工個(gè)數(shù),嘗試使用下面語(yǔ)句:

SELECT FName, FCITY, FAGE, FSalary, COUNT(FName) FROM T_Person WHERE FSALARY<5000

消息 8120,級(jí)別 16,狀態(tài) 1,第 1 行
選擇列表中的列 'T_Person.FName' 無(wú)效,因?yàn)樵摿袥](méi)有包含在聚合函數(shù)或 GROUP BY 子句中。

         可以使用子查詢實(shí)現(xiàn),語(yǔ)句:

SELECT FName, FCITY, FAGE, FSalary, ( SELECT COUNT(FName) FROM T_Person WHERE FSALARY<5000 ) PersonNum FROM T_Person 
WHERE FSALARY<5000

       結(jié)果:

SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用

     使用開(kāi)窗函數(shù)實(shí)現(xiàn),查詢結(jié)果一模一樣,就不粘貼了:

SELECT FName, FCITY, FAGE, FSalary, COUNT(FName) OVER() as PersonNum FROM T_Person 
WHERE FSALARY<5000

1.開(kāi)窗函數(shù)格式:函數(shù)名(列) OVER(選項(xiàng))

2.聚合開(kāi)窗函數(shù)格式:聚合函數(shù)(列) OVER(PARTITION BY 字段)

      over關(guān)鍵字把聚合函數(shù)當(dāng)成聚合開(kāi)窗函數(shù)而不是聚合函數(shù),SQL標(biāo)準(zhǔn)允許將所有的聚合函數(shù)用做聚合開(kāi)窗函數(shù)。OVER關(guān)鍵字后的括號(hào)中還經(jīng)常添加選項(xiàng)用以改變進(jìn)行聚合運(yùn)算的窗口范圍。如果OVER關(guān)鍵字后的括號(hào)為空,則開(kāi)窗函數(shù)會(huì)對(duì)結(jié)果集合的所有行進(jìn)行聚合運(yùn)算。

      PARTITION BY來(lái)定義行的分區(qū)來(lái)進(jìn)行聚合運(yùn)算,與group by 不同,partition by 字句創(chuàng)建的分區(qū)是獨(dú)立于結(jié)果集的,創(chuàng)建的分區(qū)只是用于進(jìn)行聚合運(yùn)算,而且不同的開(kāi)窗函數(shù)所創(chuàng)建的分區(qū)不互相影響,例如:查詢所有人員的信息,并查詢所屬城市的人員數(shù)以及同年齡的人員數(shù):

SELECT FName,FCITY, FAGE, FSalary, COUNT(FName) OVER(PARTITION BY FCITY) CityNum, 
COUNT(FName) OVER(PARTITION BY FAGE) AgeNum FROM T_Person ORDER by FCITY

 SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用

查詢所有人員的信息,并查詢所屬城市的人員數(shù),每個(gè)城市的人按照年齡排序語(yǔ)句:

SELECT FName,FCITY, FAGE, FSalary, COUNT(FName) OVER(PARTITION BY FCITY ORDER BY FAGE) CityNum FROM T_Person 

SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用

 3.排序開(kāi)窗函數(shù)格式:排序函數(shù)() OVER(ORDER BY 字段)

  (1)主要函數(shù)有ROW_NUMBER()、RANK()、DENSE_RANK()、NTILE()

   ROW_NUMBER() 加行號(hào),一般可以用于分頁(yè)查詢(現(xiàn)在被offset  fetch取代 ),對(duì)于沒(méi)有主鍵列的表加行號(hào)作用很明顯,刪除重復(fù)數(shù)據(jù)等。

  按照薪水高低給所有人員排序,同樣薪水的排名不一樣,可以用row_number(),

with a as 
(
SELECT FName, FSalary, FCity, FAge, ROW_NUMBER() over(ORDER BY FSalary) as RowNum FROM T_Person 
)
SELECT * FROM a 

SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用

 使用rank()將每個(gè)城市的薪水排行,值一樣的同一個(gè)排名,出現(xiàn)兩個(gè)第一名的時(shí)候,排在兩個(gè)第一名后的排名將是第三名

SELECT FName, FSalary, FCity, FAge, RANK() over(PARTITION BY FCITY ORDER BY FSalary) as RankNum FROM T_Person 

SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用

  使用dense_rank()將每個(gè)城市的薪水排行,值一樣的同一個(gè)排名,出現(xiàn)兩個(gè)第一名的時(shí)候,排在兩個(gè)第一名后的排名將是第三名

 SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用

ntile(數(shù)字) over(order by 字段):數(shù)字表示一組多少個(gè)數(shù),并根據(jù)數(shù)量得出分組的數(shù)量

SELECT *,NTILE(5) OVER(ORDER BY FSalary) AS NileNum FROM T_Person

SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用

總結(jié)

到此這篇關(guān)于SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用的文章就介紹到這了,更多相關(guān)SQL 開(kāi)窗函數(shù)內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!

網(wǎng)頁(yè)標(biāo)題:SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用
轉(zhuǎn)載來(lái)于:http://chinadenli.net/article38/gpccpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)公司、品牌網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化、定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
在线观看国产午夜福利| 中文久久乱码一区二区| 91天堂免费在线观看| 老外那个很粗大做起来很爽| 日本午夜免费啪视频在线| 日韩一级一片内射视频4k| 亚洲国产四季欧美一区| 欧美黑人暴力猛交精品| 婷婷九月在线中文字幕| 成人精品亚洲欧美日韩| 国产精品久久三级精品| 亚洲中文字幕人妻av| 人妻熟女中文字幕在线| 99久久国产综合精品二区| 国内真实露脸偷拍视频| 亚洲精品成人午夜久久| 午夜福利大片亚洲一区| 欧美熟妇喷浆一区二区| 黄色美女日本的美女日人| 99国产成人免费一区二区| 免费一级欧美大片免费看| 色婷婷视频国产一区视频| 亚洲欧美日本国产不卡 | 日本欧美一区二区三区在线播| 亚洲女同一区二区另类| 国产不卡的视频在线观看| 色婷婷日本视频在线观看| 中文字幕欧美视频二区| 精品一区二区三区不卡少妇av| 亚洲中文字幕在线观看四区| 福利在线午夜绝顶三级| 丰满少妇被猛烈撞击在线视频| 国产精品涩涩成人一区二区三区| 国产精品午夜小视频观看| 激情少妇一区二区三区| 亚洲日本久久国产精品久久| 91熟女大屁股偷偷对白| 大伊香蕉一区二区三区| 亚洲国产精品一区二区| 久久机热频这里只精品| 日韩女优精品一区二区三区|