溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle分析函數(shù)

發(fā)布時(shí)間:2020-07-16 08:51:13 來(lái)源:網(wǎng)絡(luò) 閱讀:784 作者:手不要亂摸 欄目:關(guān)系型數(shù)據(jù)庫(kù)

    聚合函數(shù)可以在分析模式或非分析模式下來(lái)進(jìn)行運(yùn)算。非分析模式下的聚合函數(shù)將結(jié)果集削減為較少的數(shù)據(jù)行。然而,在分析模式下,聚合函數(shù)并不減少輸出結(jié)果行數(shù)。并且,聚合函數(shù)能夠在一行中同時(shí)取得聚合和非聚合的列。分析模式的聚合函數(shù)提供了不需要任何自連接就可以聚合不同層級(jí)數(shù)據(jù)的能力。

1. sum

Oracle分析函數(shù)

可以把sum當(dāng)做聚集函數(shù)來(lái)用,也可以當(dāng)做分析函數(shù)來(lái)用

Oracle分析函數(shù)

Oracle分析函數(shù)

Oracle分析函數(shù)

與前一個(gè)sql不同的是窗口的變化,這個(gè)例子中取的是開(kāi)始行到當(dāng)前行,即對(duì)當(dāng)前行之前的行(包括當(dāng)前行)求和

Oracle分析函數(shù)

從結(jié)果中很容易理解sum分析函數(shù)


2. avg

Oracle分析函數(shù)

和sum差不多,就不多說(shuō)了

Oracle分析函數(shù)

Oracle分析函數(shù)

上面這兩個(gè)語(yǔ)句是等價(jià)的,看看結(jié)果

Oracle分析函數(shù)

下面這個(gè)語(yǔ)句,每三行求一次平均(前,中,后)

Oracle分析函數(shù)

Oracle分析函數(shù)

3. lag

Oracle分析函數(shù)

lag提供一種方式訪問(wèn)當(dāng)前位置的前面的行,默認(rèn)offset是1,表示訪問(wèn)前一行

Oracle分析函數(shù)


4. lead

利用lead可以訪問(wèn)當(dāng)前位置后面的行

Oracle分析函數(shù)

Oracle分析函數(shù)


5. first_value和last_value

first_value取窗口中的第一個(gè)值,last_value取最后一個(gè)

Oracle分析函數(shù)


6. rank

Oracle分析函數(shù)

Oracle分析函數(shù)

rank,意為排名、等級(jí)。

rank函數(shù)返回一個(gè)行的排名,值相等的行排名相同,排名是不連續(xù)的。對(duì)于top-N和bottom-N這樣的操作來(lái)說(shuō),rank函數(shù)是很有用的。rank作為聚集函數(shù)時(shí)返回某一個(gè)假定值的排名,作為分析函數(shù)時(shí)返回每一行的排名。

Oracle分析函數(shù)

Oracle分析函數(shù)


7. row_number

Oracle分析函數(shù)

row_number是一個(gè)分析函數(shù),它給每一行指定一個(gè)編號(hào),編號(hào)從1開(kāi)始。

這個(gè)函數(shù)可以實(shí)現(xiàn)top-N,bottom-N,inner-N這樣的操作。

Oracle分析函數(shù)Oracle分析函數(shù)

注意也rownum偽列區(qū)分開(kāi),rownum對(duì)于每一行都返回一個(gè)數(shù)以表明被選中的順序,比如1, 2……


8. listagg

Oracle分析函數(shù)

listagg函數(shù)用于列轉(zhuǎn)行

作為一個(gè)單行聚集函數(shù),listagg作用于所有行并返回單一的一行

作為一個(gè)分組聚集函數(shù),listagg作用于每個(gè)組,并為每個(gè)組返回一行

作為一個(gè)分析函數(shù),listagg基于查詢分區(qū)字句將數(shù)據(jù)分區(qū),并為每個(gè)分區(qū)中的每一行返回相同的結(jié)果

measure_expr,指定要操作的列或表達(dá)式

delimiter_expr,指定分隔符

order_by_clause,決定結(jié)果的順序

Oracle分析函數(shù)

Oracle分析函數(shù)

Oracle分析函數(shù)


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI