oracle计算最大与最小之间数,oracle 分析函数
oracle分析函數(shù),主要五大類
一等級函數(shù):row_number();DENSE_RANK();Rank()
主要就是遇到相同排名時的區(qū)別,
查詢各部門職位級別最高的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)函數(shù):用于計算不同的累計,如SUM,COUNT,AVG,MIN,MAX等,作用于數(shù)據(jù)的一個窗口上
1. order by 加則是當(dāng)前分區(qū)的第一行到當(dāng)前行的和,不加order by 則是當(dāng)前分區(qū)的所有行的和
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多列。當(dāng)前行之前第五行開始到當(dāng)前行,一共6行
3.range窗口: "range 5 preceding" 適用于number和date類型,order by一列。當(dāng)前行之前所有行的值大于當(dāng)前行的值減去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) 第一行到當(dāng)前行
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)將結(jié)果平均分成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類似,本函數(shù)返回分組序列中各行在分組序列的相對位置。其返回值也是介于0到1之間,不過其起始值始終為0而終結(jié)值始終為1
三制表(reporting)函數(shù):與開窗函數(shù)同名,作用于一個分區(qū)或一組上的所有列
計算每條記錄在其對應(yīng)記錄集或其子集中所占的比例。
select zzjgid,rymc, ratio_to_report(df) over (partition by zzjgid) from? t_rlzy_ry
四LAG,LEAD函數(shù):這類函數(shù)允許在結(jié)果集中向前或向后檢索值,為了避免數(shù)據(jù)的自連接,它們是非常用用的.
比較相鄰記錄
SELECT ZZJGID,lag(sum(df) ,2) over (order by zzjgid? ) pre,sum(df) cur ?from t_rlzy_ry? group by zzjgid --當(dāng)前記錄的前第二條
SELECT ZZJGID,LEAD(sum(df) ,2) over (order by zzjgid? ) pre,sum(df) cur ?from t_rlzy_ry? group by zzjgid--當(dāng)前記錄的后第二條
五VAR_POP,VAR_SAMP,STDEV_POPE及線性的衰減函數(shù):計算任何未排序分區(qū)的統(tǒng)計值
1.STDDEV ([distinct|all] col) OVER (analytic_clause)返回列的標(biāo)準(zhǔn)偏差。
2.STDDEV_POP(col) OVER (analytic_clause)返回該分組序列總體標(biāo)準(zhǔn)偏差
3.VAR_POP(col) OVER (analytic_clause)返回分組序列的總體方差,VAR_POP進(jìn)行如下計算:(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / COUNT(expr)
4.VAR_SAMP(col) OVER (analytic_clause)與上類似,該函數(shù)返回分組序列的樣本方差,,其計算公式為:(SUM(expr2) - SUM(expr)2 / COUNT(expr)) / (COUNT(expr) - 1)
5.VARIANCE(col) OVER (analytic_clause)該函數(shù)返回分組序列方差,Oracle計算該變量如下:
如果表達(dá)式中行數(shù)為1,則返回0,如果表達(dá)式中行數(shù)大于1,則返回VAR_SAMP
總結(jié)
以上是生活随笔為你收集整理的oracle计算最大与最小之间数,oracle 分析函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成语“冬寒抱冰”常用来形容什么?蚂蚁庄园
- 下一篇: c语言中注释部分二侧分界符为,C语言常见