十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
聚合函數(shù)可以在分析模式或非分析模式下來(lái)進(jìn)行運(yùn)算。非分析模式下的聚合函數(shù)將結(jié)果集削減為較少的數(shù)據(jù)行。然而,在分析模式下,聚合函數(shù)并不減少輸出結(jié)果行數(shù)。并且,聚合函數(shù)能夠在一行中同時(shí)取得聚合和非聚合的列。分析模式的聚合函數(shù)提供了不需要任何自連接就可以聚合不同層級(jí)數(shù)據(jù)的能力。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、雅安服務(wù)器托管、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、會(huì)澤網(wǎng)站維護(hù)、網(wǎng)站推廣。
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基于查詢(xún)分區(qū)字句將數(shù)據(jù)分區(qū),并為每個(gè)分區(qū)中的每一行返回相同的結(jié)果
measure_expr,指定要操作的列或表達(dá)式
delimiter_expr,指定分隔符
order_by_clause,決定結(jié)果的順序