Oracle 分析函式

2021-08-27 14:54:44 字數 1274 閱讀 9289

分析函式提供了跨行,多層級聚合引用值的能力,並且可以在資料子集中控制排序粒度。與聚合函式不同,分析函式並不將結果集聚合較少的行。

分析函式是在主查詢結果的基礎上進行一定的分析,如分部門彙總,分部門求均值等等。

分析函式的模式:

function(arg1,arg2,arg3...argn)over ([partition-by-caluse][order-by-cluase][windowing-clause]);

分割槽子句按照分割槽列的值對資料進行分組。所有分割槽列的值相同的資料行被組合為乙個資料分割槽。

視窗子句指定了分析函式的進行運算的資料子集。

[rows|range] between and

whereas is [unbounded preceding|current row | n preceding | n foloowing]

is [unbounded following | current row| n preceding | n following]

(1)rows|range:此關鍵字定義了乙個window。

(2)between...and...:為窗品指乙個起點和終點。

(3)unbounded preceding:指明視窗是從分割槽(partition)的第一行開始。

(4)current row:指明視窗是從當前行開始。

note:分析函式不能進行巢狀

常見的分析函式列表:

laglead

first_value

last_value

nth_vlue

rank

dense_rank

row_number

ratio_to_report

percent_rank

percentile_count

percentile_dist

ntile

listagg

聚合函式可以在分析模式和非分析模式下進行計算,非分析模式將結果集削減為較少的行,分析模式下並不減少輸出結果行數。

並且聚合函式能夠在同一行中取得聚合和非聚合的列。

select o.cust_nbr,o.region_id,sum(sum(o.total_sales)) over(partition by o.region_id)cust_sales from music.order_tmp o where o.year =2001 group by o.region_id,o.cust_nbr;

oracle分析函式

oracle分析函式 sql plus環境 1 group by子句 create test table and insert test data.create table students id number 15,0 area varchar2 10 stu type varchar2 2 sc...

oracle 分析函式 排序值分析函式

一 問題描述 查詢列表時,我們有時需要對查詢結果依據某個字段進行排名。如果每條記錄在排序欄位上都不相同,我們可以將原查詢作為乙個檢視,查詢其rownum,便可以實現簡單排序,例如 但是,很多時候我們想用來排序的字段都是有重複值的,此時可能需要將值相同的記錄名詞並列,那麼我們就需要用到oracle的分...

oracle 分析函式OVER

分析函式用於計算基於組的某種聚合值,它和聚合函式的不同之處是 對於每個組返回多行,而聚合函式對於每個組只返回一行。over over order by.與over partition by.之間的區別 over order by.用在聚合函式 max sun 後面,可返回根據排序結果進行統計到當前行...