您好,登錄后才能下訂單哦!
聚合函數(shù)可以在分析模式或非分析模式下來(lái)進(jìn)行運(yùn)算。非分析模式下的聚合函數(shù)將結(jié)果集削減為較少的數(shù)據(jù)行。然而,在分析模式下,聚合函數(shù)并不減少輸出結(jié)果行數(shù)。并且,聚合函數(shù)能夠在一行中同時(shí)取得聚合和非聚合的列。分析模式的聚合函數(shù)提供了不需要任何自連接就可以聚合不同層級(jí)數(shù)據(jù)的能力。
1. sum
可以把sum當(dāng)做聚集函數(shù)來(lái)用,也可以當(dāng)做分析函數(shù)來(lái)用
與前一個(gè)sql不同的是窗口的變化,這個(gè)例子中取的是開(kāi)始行到當(dāng)前行,即對(duì)當(dāng)前行之前的行(包括當(dāng)前行)求和
從結(jié)果中很容易理解sum分析函數(shù)
2. avg
和sum差不多,就不多說(shuō)了
上面這兩個(gè)語(yǔ)句是等價(jià)的,看看結(jié)果
下面這個(gè)語(yǔ)句,每三行求一次平均(前,中,后)
3. lag
lag提供一種方式訪問(wèn)當(dāng)前位置的前面的行,默認(rèn)offset是1,表示訪問(wèn)前一行
4. lead
利用lead可以訪問(wèn)當(dāng)前位置后面的行
5. first_value和last_value
first_value取窗口中的第一個(gè)值,last_value取最后一個(gè)
6. rank
rank,意為排名、等級(jí)。
rank函數(shù)返回一個(gè)行的排名,值相等的行排名相同,排名是不連續(xù)的。對(duì)于top-N和bottom-N這樣的操作來(lái)說(shuō),rank函數(shù)是很有用的。rank作為聚集函數(shù)時(shí)返回某一個(gè)假定值的排名,作為分析函數(shù)時(shí)返回每一行的排名。
7. row_number
row_number是一個(gè)分析函數(shù),它給每一行指定一個(gè)編號(hào),編號(hào)從1開(kāi)始。
這個(gè)函數(shù)可以實(shí)現(xiàn)top-N,bottom-N,inner-N這樣的操作。
注意也rownum偽列區(qū)分開(kāi),rownum對(duì)于每一行都返回一個(gè)數(shù)以表明被選中的順序,比如1, 2……
8. listagg
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é)果的順序
免責(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)容。