99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2020-08-23 閱讀量: 1213
開窗函數(shù)

開窗函數(shù)是在滿足某種條件的記錄集合上執(zhí)行的特殊函數(shù)。對(duì)于每條記錄都要在此窗口內(nèi)執(zhí)行函數(shù),有 的函數(shù)隨著記錄不同,窗口大小都是固定的,這種屬于靜態(tài)窗口;有的函數(shù)則相反,不同的記錄對(duì)應(yīng)著 不同的窗口,這種動(dòng)態(tài)變化的窗口叫滑動(dòng)窗口。開窗函數(shù)的本質(zhì)還是聚合運(yùn)算,只不過(guò)它更具靈活性, 它對(duì)數(shù)據(jù)的每一行,都使用與該行相關(guān)的行進(jìn)行計(jì)算并返回計(jì)算結(jié)果。

語(yǔ)法:開窗函數(shù)名([<字段名>]) over([partition by <分組字段>] [order by <排序字段> [desc]] [< 滑動(dòng)窗口>])

開窗函數(shù)的一個(gè)概念是當(dāng)前行,當(dāng)前行屬于某個(gè)窗口,窗口由over關(guān)鍵字來(lái)指定函數(shù)執(zhí)行的窗口范圍, 如果后面括號(hào)中什么都不寫,則意味著窗口包含滿足where條件的所有行,開窗函數(shù)基于所有行進(jìn)行計(jì) 算;如果不為空,則有三個(gè)參數(shù)來(lái)設(shè)置窗口:

partition by子句:按照指定字段進(jìn)行分區(qū),兩個(gè)分區(qū)由邊界分隔,開窗函數(shù)在不同的分區(qū)內(nèi)分別 執(zhí)行,在跨越分區(qū)邊界時(shí)重新初始化。

order by子句:按照指定字段進(jìn)行排序,開窗函數(shù)將按照排序后的記錄順序進(jìn)行編號(hào)??梢院?partition by子句配合使用,也可以單獨(dú)使用。

frame子句:當(dāng)前分區(qū)的一個(gè)子集,用來(lái)定義子集的規(guī)則,通常用來(lái)作為滑動(dòng)窗口使用。

對(duì)于滑動(dòng)窗口的范圍指定,通常使用 between frame_start and frame_end 語(yǔ)法來(lái)表示行范圍, frame_start和frame_end可以支持如下關(guān)鍵字,來(lái)確定不同的動(dòng)態(tài)行記錄:

current row 邊界是當(dāng)前行,一般和其他范圍關(guān)鍵字一起使用

unbounded preceding 邊界是分區(qū)中的第一行

unbounded following 邊界是分區(qū)中的最后一行

expr preceding 邊界是當(dāng)前行減去expr的值

expr following 邊界是當(dāng)前行加上expr的值

比如,下面都是合法的范圍:

rows between 1 preceding and 1 following 窗口范圍是分區(qū)中的當(dāng)前行、前一行、后一行一共三 行記錄。

rows between 1 preceding and current row 窗口范圍是分區(qū)中的前一行、當(dāng)前行一共兩行記錄。

rows between current row and 1 following 窗口范圍是分區(qū)中的當(dāng)前行、后一行一共兩行記錄。

rows unbounded preceding 窗口范圍是分區(qū)中的第一行到當(dāng)前行。

rows between unbounded preceding and current row 窗口范圍是分區(qū)中的第一行到當(dāng)前行。

rows between current row and unbounded following 窗口范圍是分區(qū)中的當(dāng)前行到最后一行。

rows between unbounded preceding and unbounded following 窗口范圍是當(dāng)前分區(qū)中所有行。

動(dòng)態(tài)窗口函數(shù):fifirst_value() / last_value()/nth_value()/聚合函數(shù)用于開窗

如沒(méi)有指定排序和滑動(dòng)窗口范圍,默認(rèn)計(jì)算的是分區(qū)內(nèi)的所有記錄。

指定分區(qū)和排序后,如沒(méi)有指定滑動(dòng)窗口范圍,默認(rèn)計(jì)算的是分區(qū)內(nèi)的第一行到當(dāng)前行。

靜態(tài)窗口函數(shù):row_number() / rank() / dense_rank()/percent_rank() / cume_dist()/lag() / lead()/ntile()

不管是否指定滑動(dòng)窗口范圍,窗口都是固定的,所以指定的滑動(dòng)窗口范圍無(wú)效。

開窗函數(shù)和普通聚合函數(shù)的區(qū)別: 聚合函數(shù)是將多條記錄聚合為一條;而開窗函數(shù)是每條記錄都會(huì)執(zhí)行,有幾條記錄執(zhí)行完還是幾 條。

聚合函數(shù)也可以用于開窗函數(shù)中。

37.9992
0
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無(wú)數(shù)據(jù)