聚合函數(shù)可以在分析模式或非分析模式下來進(jìn)行運(yùn)算。非分析模式下的聚合函數(shù)將結(jié)果集削減為較少的數(shù)據(jù)行。然而,在分析模式下,聚合函數(shù)并不減少輸出結(jié)果行數(shù)。并且,聚合函數(shù)能夠在一行中同時(shí)取得聚合和非聚合的列。分析模式的聚合函數(shù)提供了不需要任何自連接就可以聚合不同層級(jí)數(shù)據(jù)的能力。
創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、蘇尼特左網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為蘇尼特左等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。1. sum
可以把sum當(dāng)做聚集函數(shù)來用,也可以當(dāng)做分析函數(shù)來用
與前一個(gè)sql不同的是窗口的變化,這個(gè)例子中取的是開始行到當(dāng)前行,即對(duì)當(dāng)前行之前的行(包括當(dāng)前行)求和
從結(jié)果中很容易理解sum分析函數(shù)
2. avg
和sum差不多,就不多說了
上面這兩個(gè)語(yǔ)句是等價(jià)的,看看結(jié)果
下面這個(gè)語(yǔ)句,每三行求一次平均(前,中,后)
3. lag
lag提供一種方式訪問當(dāng)前位置的前面的行,默認(rèn)offset是1,表示訪問前一行
4. lead
利用lead可以訪問當(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這樣的操作來說,rank函數(shù)是很有用的。rank作為聚集函數(shù)時(shí)返回某一個(gè)假定值的排名,作為分析函數(shù)時(shí)返回每一行的排名。
7. row_number
row_number是一個(gè)分析函數(shù),它給每一行指定一個(gè)編號(hào),編號(hào)從1開始。
這個(gè)函數(shù)可以實(shí)現(xiàn)top-N,bottom-N,inner-N這樣的操作。
注意也rownum偽列區(qū)分開,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é)果的順序
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。