oracle计算最大与最小之间数,oracle 分析函数
oracle分析函數,主要五大類
一等級函數:row_number();DENSE_RANK();Rank()
主要就是遇到相同排名時的區別,
查詢各部門職位級別最高的2個人
select * from (select rybm,rymc,zzjgid,zwdj,row_number() over(partition by zzjgid order by zwjb desc ) rw? from t_rlzy_ry) where rw<2
二開窗(windowing)函數:用于計算不同的累計,如SUM,COUNT,AVG,MIN,MAX等,作用于數據的一個窗口上
1. order by 加則是當前分區的第一行到當前行的和,不加order by 則是當前分區的所有行的和
select zzjgid,rymc,df,sum(df) over(partition by zzjgid order by df) from t_rlzy_ry where df>0
2.rows窗口: "rows 5 preceding" 適用于任何類型而且可以order by多列。當前行之前第五行開始到當前行,一共6行
3.range窗口: "range 5 preceding" 適用于number和date類型,order by一列。當前行之前所有行的值大于當前行的值減去5的行
4.以下三條語句等效
over (order by salary rows between unbounded preceding and unbounded following)
over (order by salary range between unbounded preceding and unbounded following)
over (partition by null)
5.over (order by salary range between unbounded preceding and current row) 第一行到當前行
6.NULLS LAST/FIRST? 控制排列順序,最后或者最前
7.keep()取一個最大和最小值
select zzjgid,min(df) keep(dense_rank first order by df ) first,max(df) keep(dense_rank last order by df ) last from t_rlzy_ry group by zzjgid
8.ntile(N)將結果平均分成N等分
select zzjgid,rymc,df,ntile(5) over( order by df )? from t_rlzy_ry
9.first_value/last_value
SELECT ZZJGID,FIRST_value(sum(df) ) over (order by zzjgid rows between 1 preceding and 1 following ) pre,
sum(df) cur,
last_value(sum(df) ) over (order by zzjgid rows between 1 preceding and 1 following ) next
from t_rlzy_ry? group by zzjgid
10.CUME_DIST() OVER([partition_clause] order_by_clause) 返回該行在分組序列中的相對位置,返回值介于0到1之間
11.PERCENT_RANK() OVER([partition_clause] order_by_clause) 與CUME_DIST類似,本函數返回分組序列中各行在分組序列的相對位置。其返回值也是介于0到1之間,不過其起始值始終為0而終結值始終為1
三制表(reporting)函數:與開窗函數同名,作用于一個分區或一組上的所有列
計算每條記錄在其對應記錄集或其子集中所占的比例。
select zzjgid,rymc, ratio_to_report(df) over (partition by zzjgid) from? t_rlzy_ry
四LAG,LEAD函數:這類函數允許在結果集中向前或向后檢索值,為了避免數據的自連接,它們是非常用用的.
比較相鄰記錄
SELECT ZZJGID,lag(sum(df) ,2) over (order by zzjgid? ) pre,sum(df) cur ?from t_rlzy_ry? group by zzjgid --當前記錄的前第二條
SELECT ZZJGID,LEAD(sum(df) ,2) over (order by zzjgid? ) pre,sum(df) cur ?from t_rlzy_ry? group by zzjgid--當前記錄的后第二條
五VAR_POP,VAR_SAMP,STDEV_POPE及線性的衰減函數:計算任何未排序分區的統計值
1.STDDEV ([distinct|all] col) OVER (analytic_clause)返回列的標準偏差。
2.STDDEV_POP(col) OVER (analytic_clause)返回該分組序列總體標準偏差
3.VAR_POP(col) OVER (analytic_clause)返回分組序列的總體方差,VAR_POP進行如下計算:(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr)
4.VAR_SAMP(col) OVER (analytic_clause)與上類似,該函數返回分組序列的樣本方差,,其計算公式為:(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / (COUNT(expr) - 1)
5.VARIANCE(col) OVER (analytic_clause)該函數返回分組序列方差,Oracle計算該變量如下:
如果表達式中行數為1,則返回0,如果表達式中行數大于1,則返回VAR_SAMP
總結
以上是生活随笔為你收集整理的oracle计算最大与最小之间数,oracle 分析函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成语“冬寒抱冰”常用来形容什么?蚂蚁庄园
- 下一篇: 233乐园广告太多怎么办