日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle计算最大与最小之间数,oracle 分析函数

發布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 分析函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。