分析函式提供了跨行,多層級聚合引用值的能力,並且可以在資料子集中控制排序粒度。與聚合函式不同,分析函式並不將結果集聚合較少的行。
分析函式是在主查詢結果的基礎上進行一定的分析,如分部門彙總,分部門求均值等等。
分析函式的模式:
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 後面,可返回根據排序結果進行統計到當前行...