mysql窗口函數(shù)

mysql官方說明


1.窗口函數(shù)的基本用法如下:
window_name() over ([partition_defintion]|[order_definition]|[frame_definition])
其中寂纪,over是關(guān)鍵字烛卧,用來指定函數(shù)執(zhí)行的窗口范圍虎谢,如果后面括號中什么都不寫,則意味著窗口包含滿足where條件的所有行膘盖,窗口函數(shù)基于所有行進(jìn)行計(jì)算;如果不為空妇斤,則支持以下四種語法來設(shè)置窗口:
(1)window_function_name:給窗口指定一個別名茎截,如果SQL中涉及的窗口較多,采用別名可以看起來更清晰易讀油狂。
(2)partition子句:窗口按照那些字段進(jìn)行分組历恐,窗口函數(shù)在不同的分組上分別執(zhí)行。上面的例子就按照用戶id進(jìn)行了分組专筷。在每個用戶id上弱贼,按照order by的順序分別生成從1開始的順序編號。
(3)order by子句:按照哪些字段進(jìn)行排序磷蛹,窗口函數(shù)將按照排序后的記錄順序進(jìn)行編號吮旅。可以和partition子句配合使用味咳,也可以單獨(dú)使用庇勃。上例中二者同時使用,如果沒有partition子句槽驶,則會按照所有用戶的訂單金額排序來生成序號匪凉。
(4)frame子句:frame是當(dāng)前分區(qū)的一個子集,子句用來定義子集的規(guī)則捺檬,通常用來作為滑動窗口使用再层。比如要根據(jù)每個訂單動態(tài)計(jì)算包括本訂單和按時間順序前后兩個訂單的平均訂單金額,則可以設(shè)置如下frame子句來創(chuàng)建滑動窗口
摘自http://blog.sina.com.cn/s/blog_141b32d280102ym7h.html


2.窗口函數(shù)可以和聚類函數(shù)一起使用
可以解決許多分組求和的問題堡纬,并且可以帶出來一些其他字段聂受。

mysql> SELECT
         year, country, product, profit,
         SUM(profit) OVER() AS total_profit,
         SUM(profit) OVER(PARTITION BY country) AS country_profit
       FROM sales
       ORDER BY country, year, product, profit;
year country product profit total_profit country_profit
2000 Finland Computer 1500 7535 1610
2000 Finland Phone 100 7535 1610
2001 Finland Phone 10 7535 1610
2000 India Calculator 75 7535 1350
2000 India Calculator 75 7535 1350
2000 India Computer 1200 7535 1350
2000 USA Calculator 75 7535 4575
2000 USA Computer 1500 7535 4575
2001 USA Calculator 50 7535 4575
2001 USA Computer 1200 7535 4575
2001 USA Computer 1500 7535 4575
2001 USA TV 100 7535 4575
2001 USA TV 150 7535 4575

3.mysql專門提供了窗口函數(shù)
CUME_DIST()
DENSE_RANK()
FIRST_VALUE()
LAG()
LAST_VALUE()
LEAD()
NTH_VALUE()
NTILE()
PERCENT_RANK()
RANK()
ROW_NUMBER()

mysql> SELECT
         year, country, product, profit,
         ROW_NUMBER() OVER(PARTITION BY country) AS row_num1,
         ROW_NUMBER() OVER(PARTITION BY country ORDER BY year, product) AS row_num2
       FROM sales;
year country product profit row_num1 row_num2
2000 Finland Computer 1500 2 1
2000 Finland Phone 100 1 2
2001 Finland Phone 10 3 3
2000 India Calculator 75 2 1
2000 India Calculator 75 3 2
2000 India Computer 1200 1 3
2000 USA Calculator 75 5 1
2000 USA Computer 1500 4 2
2001 USA Calculator 50 2 3
2001 USA Computer 1500 3 4
2001 USA Computer 1200 7 5
2001 USA TV 150 1 6
2001 USA TV 100 6 7
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市烤镐,隨后出現(xiàn)的幾起案子蛋济,更是在濱河造成了極大的恐慌,老刑警劉巖炮叶,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碗旅,死亡現(xiàn)場離奇詭異渡处,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)祟辟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進(jìn)店門医瘫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人旧困,你說我怎么就攤上這事醇份。” “怎么了吼具?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵僚纷,是天一觀的道長。 經(jīng)常有香客問我拗盒,道長怖竭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任陡蝇,我火速辦了婚禮侵状,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毅整。我一直安慰自己趣兄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布悼嫉。 她就那樣靜靜地躺著艇潭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戏蔑。 梳的紋絲不亂的頭發(fā)上蹋凝,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天,我揣著相機(jī)與錄音总棵,去河邊找鬼鳍寂。 笑死,一個胖子當(dāng)著我的面吹牛情龄,可吹牛的內(nèi)容都是我干的迄汛。 我是一名探鬼主播,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼骤视,長吁一口氣:“原來是場噩夢啊……” “哼鞍爱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起专酗,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤睹逃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后祷肯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沉填,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疗隶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了翼闹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斑鼻。...
    茶點(diǎn)故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖橄碾,靈堂內(nèi)的尸體忽然破棺而出卵沉,到底是詐尸還是另有隱情颠锉,我是刑警寧澤法牲,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布,位于F島的核電站琼掠,受9級特大地震影響拒垃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瓷蛙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一悼瓮、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艰猬,春花似錦横堡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至食听,卻和暖如春胸蛛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背樱报。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工葬项, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人迹蛤。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓民珍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盗飒。 傳聞我的和親對象是個殘疾皇子穷缤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評論 2 350