MySQL 8.x新特性:窗口函數(shù)

MySQL數(shù)據(jù)庫專欄:
簡書:http://www.reibang.com/nb/42057860
知乎:https://zhuanlan.zhihu.com/791072385mysql

一展父、窗口函數(shù)概念

窗口函數(shù)又叫做分析函數(shù)坪仇,在Oracle中已經(jīng)早就又了,這次MySQL從5.x升級到8.x其中一個特性就是開始支持窗口函數(shù)了魁亦。在MySQL不支持窗口函數(shù)之前,一直采用變量的方式來模擬窗口函數(shù)的實現(xiàn)奔则,雖然效率還行杏死,但是代碼看上去并不簡單。
首先要理解窗口函數(shù)是干什么用的光督?當(dāng)我們處理既要分組時,又要對分組內(nèi)的數(shù)據(jù)進(jìn)行排序的時候塔粒,我們就可以使用窗口函數(shù)结借。
窗口函數(shù)和普通聚合函數(shù)很容易混淆,二者區(qū)別如下:

  • 聚合函數(shù)是將多條記錄聚合為一條卒茬;而窗口函數(shù)是每條記錄都會執(zhí)行船老,有幾條記錄執(zhí)行完還是幾條咖熟。
  • 聚合函數(shù)也可以用于窗口函數(shù)中。

二努隙、具體例子

通常我們一般使用的比較多的是窗口函數(shù)中的序號函數(shù):row_number() / rank() / dense_rank(),那這三個函數(shù)能起到的作用如下:
//例子來自leetCode中高贊題解(TopN分組排序問題)
https://leetcode-cn.com/problems/department-top-three-salaries/solution/tu-jie-sqlmian-shi-ti-jing-dian-topnwen-ti-by-houz/

//還可以使用over(partition by 分組 order by 字段)實現(xiàn)先分組后排序
select *,
   rank() over (order by 成績 desc) as ranking,
   dense_rank() over (order by 成績 desc) as dese_rank,
   row_number() over (order by 成績 desc) as row_num
from 班級;

?得到結(jié)果:


成績分組排序

從上面的結(jié)果可以看出:
1)rank函數(shù):這個例子中是5位辜昵,5位荸镊,5位,8位堪置,也就是如果有并列名次的行躬存,會占用下一名次的位置。比如正常排名是1舀锨,2岭洲,3,4坎匿,但是現(xiàn)在前3名是并列的名次盾剩,結(jié)果是:1,1替蔬,1告私,4。

2)dense_rank函數(shù):這個例子中是5位承桥,5位驻粟,5位,6位凶异,也就是如果有并列名次的行蜀撑,不占用下一名次的位置。比如正常排名是1剩彬,2酷麦,3,4喉恋,但是現(xiàn)在前3名是并列的名次贴铜,結(jié)果是:1,1瀑晒,1绍坝,2。

3)row_number函數(shù):這個例子中是5位苔悦,6位轩褐,7位,8位玖详,也就是不考慮并列名次的情況把介。比如前3名是并列的名次勤讽,排名是正常的1,2拗踢,3脚牍,4。

三巢墅、總結(jié)

面對一些既要分組又要排序的TOP N問題诸狭,我們可以使用窗口函數(shù)快速得出結(jié)果.

# topN問題 sql模板
select *
from (
   select *, 
          row_number() over (partition by 要分組的列名
                       order by 要排序的列名 desc) as 排名
   from 表名) as a
where 排名 <= N;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市君纫,隨后出現(xiàn)的幾起案子驯遇,更是在濱河造成了極大的恐慌,老刑警劉巖蓄髓,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叉庐,死亡現(xiàn)場離奇詭異,居然都是意外死亡会喝,警方通過查閱死者的電腦和手機(jī)陡叠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肢执,“玉大人匾竿,你說我怎么就攤上這事∥低颍” “怎么了岭妖?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長反璃。 經(jīng)常有香客問我昵慌,道長,這世上最難降的妖魔是什么淮蜈? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任斋攀,我火速辦了婚禮,結(jié)果婚禮上梧田,老公的妹妹穿的比我還像新娘淳蔼。我一直安慰自己,他們只是感情好裁眯,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布鹉梨。 她就那樣靜靜地躺著,像睡著了一般穿稳。 火紅的嫁衣襯著肌膚如雪存皂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天逢艘,我揣著相機(jī)與錄音旦袋,去河邊找鬼骤菠。 笑死,一個胖子當(dāng)著我的面吹牛疤孕,可吹牛的內(nèi)容都是我干的商乎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼祭阀,長吁一口氣:“原來是場噩夢啊……” “哼鹉戚!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起柬讨,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤崩瓤,失蹤者是張志新(化名)和其女友劉穎袍啡,沒想到半個月后踩官,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡境输,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年蔗牡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗅剖。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡辩越,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出信粮,到底是詐尸還是另有隱情黔攒,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布强缘,位于F島的核電站督惰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏旅掂。R本人自食惡果不足惜赏胚,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望商虐。 院中可真熱鬧觉阅,春花似錦、人聲如沸秘车。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叮趴。三九已至痴柔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間疫向,已是汗流浹背咳蔚。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工豪嚎, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谈火。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓侈询,卻偏偏與公主長得像,于是被迫代替她去往敵國和親糯耍。 傳聞我的和親對象是個殘疾皇子扔字,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 分析函數(shù),也稱為窗口函數(shù)温技,通常被認(rèn)為僅對數(shù)據(jù)倉庫SQL有用革为。使用分析函數(shù)的查詢,基于對數(shù)據(jù)行的分組來計算總量值舵鳞。與...
    貓貓_tomluo閱讀 3,325評論 3 18
  • 窗口函數(shù)(OLAP 實時分析處理函數(shù)) 震檩,可以一般聚合函數(shù)無法實現(xiàn)的高級操作。諸如排序蜓堕、生成序列號等功能抛虏。目前 D...
    cqzhangjian閱讀 970評論 0 50
  • pyspark.sql module Module context Spark SQL和DataFrames中的重...
    盜夢者_(dá)56f2閱讀 5,435評論 0 19
  • 前幾天去參加高中同學(xué)的婚禮迂猴,禮堂溫馨典雅,處處透著甜蜜背伴。新郎沸毁、新娘都是我的高中同學(xué),相知相戀十一年修成正果傻寂,步入婚...
    晚依閱讀 1,940評論 11 28
  • 帶老人坐一次大船息尺,坐一次飛機(jī),是今年的重要愿望崎逃。上周媽媽去了一趟重慶掷倔,將坐船這個愿望推向了高峰,和老公商...
    瑩子悅讀書香閱讀 650評論 0 1