一、count(1) over(partition by 列名 order by 列名) :統計分區中各組的行數,partition by 可選,order by 可選sql
二、sum(列名) over(partition by 列名 order by 列名) :統計分區中記錄的總和,partition by 可選,order by 可選函數
三、avg(列名) over(partition by 列名 order by 列名) :統計分區中記錄的平均值,partition by 可選,order by 可選code
四、min(列名) over(partition by 列名 order by 列名) :統計分區中記錄的最小值,partition by 可選,order by 可選排序
五、max(列名) over(partition by 列名 order by 列名) :統計分區中記錄的最大值,partition by 可選,order by 可選it
六、rank() over(partition by 列名 order by 列名) :對分區中記錄排名,如遇到排名相同則下個會跳躍(例:1,2,2,4,5),partition by 可選,order by 必選io
七、dense_rank(partition by 列名 order by 列名) :對分區中記錄排名,如遇到排名相同則連續排序(例:1,2,2,3,4),partition by 可選,order by 必選ast
八、row_number() over(partition by 列名 order by 列名) :排序,無重複值,partition by 可選,order by 必選class
九、ntile(平均分紅分數) over(partition by 列名 order by 列名) :partition by 可選,order by 必選 ,n表示將分區內記錄平均分紅n份,多出的按照順序依次分給前面的組select
十、first_value(列名) over(partition by 列名 order by 列名) :取出分區中第一條記錄的字段值,partition by 可選,order by 可選統計
last_value(列名) over(partition by 列名 order by 列名) :取出分區中最後一條記錄的字段值,partition by 可選,order by 可選
十一、first :從DENSE_RANK返回的集合中取出排在最前面的一個值的行
last :從DENSE_RANK返回的集合中取出排在最後面的一個值的行
select job,max(salary) keep(dense_rank first order by salary desc), max(salary) keep(dense_rank last order by salary desc) from emp group by job; keep前面能夠是:min,max,sum,avg,count,variance,stddev
十二、lag(列名,取當前上n行數據,當前數據沒有上n行數據則返回的默認值) over(partition by 列名 order by 列名) :取出前n行數據,partition by 可選,order by 必選
lead(列名,取當前下n行數據,當前數據沒有下n行數據則返回的默認值) over(partition by 列名 order by 列名) :取出後n行數據,partition by 可選,order by 必選
1三、ratio_to_report(a) over(partition by b) :求按照b分組後a的值在所屬分組中總值的佔比,a的值必須爲數值或數值型字段 partition by 可選,order by 不可選
1四、percent_rank() over(partition by 列名 order by 列名) :partition by 可選,order by 必選 所在組排名序號-1除以該組全部的行數-1,排名跳躍排序
1五、cume_dist() over(partition by 列名 order by 列名) :partition by 可選,order by必選 所在組排名序號除以該組全部的行數,注意對於重複行,計算時取重複行中的最後一行的位置
1六、precentile_cont( x ) within group(order by ...) over() :over()中partition by可選,order by 不可選
x爲輸入的百分比,是0-1之間的一個小數,返回該百分比位置的數據,若沒有則返回如下計算值(r):
a=1+( x *(N-1) ) x爲輸入的百分比,N爲分區內的記錄的行數
b=ceil ( a ) 向上取整
c = floor( a ) 向下取整
r=a * 百分比位置上一條數據 + b * 百分比位置下一條數據
select ename,job,salary,percentile_cont(0.5) within group(order by salary) over() from emp; select ename,job,salary,percentile_cont(0.5) within group(order by salary) over(partition by job) from emp;
1七、stddev() over():計算樣本標準差,只有一行數據時返回0,partition by 可選,order by 可選
stddev_samp() over():計算樣本標準差,只有一行數據時返回null,partition by 可選,order by 可選
stddev_pop() over():計算整體標準差,partition by 可選,order by 可選
select stddev(stu_age) over() from student; --計算全部記錄的樣本標準差 select stddev(stu_age) over(order by stu_age) from student; --計算遞加的樣本標準差 select stddev(stu_age) over(partition by stu_major) from student; --計算分組的樣本標準差 select stddev(stu_age) over(partition by stu_major order by stu_age) from student; --計算分組遞加的樣本標準差 select stddev_samp(stu_age) over() from student; --計算全部記錄的樣本標準差 select stddev_samp(stu_age) over(order by stu_age) from student; --計算遞加的樣本標準差 select stddev_samp(stu_age) over(partition by stu_major) from student; --計算分組的樣本標準差 select stddev_samp(stu_age) over(partition by stu_major order by stu_age) from student; --計算分組遞加的樣本標準差 select stddev_pop(stu_age) over() from student; --計算全部記錄的整體標準差 select stddev_pop(stu_age) over(order by stu_age) from student; --計算遞加的整體標準差 select stddev_pop(stu_age) over(partition by stu_major) from student; --計算分組的整體標準差 select stddev_pop(stu_age) over(partition by stu_major order by stu_age) from student;--計算分組遞加的整體標準差
1八、variance() over():計算樣本方差,只有一行數據時返回0,partition by 可選,order by 可選
var_samp() over():計算樣本方差,只有一行數據時返回null,partition by 可選,order by 可選
var_pop() over():計算整體方差,partition by 可選,order by 可選
select variance(stu_age) over() from student; --計算全部記錄的樣本方差 select variance(stu_age) over(order by stu_age) from student; --計算遞加的樣本方差 select variance(stu_age) over(partition by stu_major) from student; --計算分組的樣本方差 select variance(stu_age) over(partition by stu_major order by stu_age) from student; --計算分組遞加的樣本方差 select var_samp(stu_age) over() from student; --計算全部記錄的樣本方差 select var_samp(stu_age) over(order by stu_age) from student; --計算遞加的樣本方差 select var_samp(stu_age) over(partition by stu_major) from student; --計算分組的樣本方差 select var_samp(stu_age) over(partition by stu_major order by stu_age) from student; --計算分組遞加的樣本方差 select var_pop(stu_age) over() from student; --記錄全部就的整體方差 select var_pop(stu_age) over(order by stu_age) from student; --計算遞加的整體方差 select var_pop(stu_age) over(partition by stu_major) from student; --計算分組的整體方差 select var_pop(stu_age) over(partition by stu_major order by stu_age) from student;--計算分組遞加的樣本方差
stddev()=sqrt( variance() ) sqrt()--求開方
stddev_samp()=sqrt( var_samp() )
stddec_pop=sqrt( var_pop() )
1九、covar_samp over():返回一對錶達式的樣本協方差,partition by 可選,order by 可選
covar_pop over(): 返回一堆表達式的整體協方差,partition by 可選,order by 可選
select covar_samp(stu_age,line) over() from student; --計算全部記錄的樣本協方差 select covar_samp(stu_age,line) over(order by stu_age) from student; --計算遞加的樣本協方差 select covar_samp(stu_age,line) over(partition by stu_major) from student; --計算分組的樣本協方差 select covar_samp(stu_age,line) over(partition by stu_major order by stu_age) from student; --計算分組遞加的樣本協方差 select covar_pop(stu_age,line) over() from student; --計算全部記錄的整體協方差 select covar_pop(stu_age,line) over(order by stu_age) from student; --計算遞加的整體協方差 select covar_pop(stu_age,line) over(partition by stu_major) from student; --計算分組的整體協方差 select covar_pop(stu_age,line) over(partition by stu_major order by stu_age) from student; --計算分組遞加的整體協方差
20、corr() over() :返回一對錶達式的相關係數,partition by 可選,order by 可選
select corr(stu_age,line) over() from student; --計算全部記錄的相關係數 select corr(stu_age,line) over(order by stu_age) from student; --計算遞加的相關係數 select corr(stu_age,line) over(partition by stu_major) from student; --計算分組的相關係數 select corr(stu_age,line) over(partition by stu_major order by stu_age) from student; --計算分組遞加的相關係數
2一、REGR_ (Linear Regression) Functions:這些線性迴歸函數適合最小二乘法迴歸線,有9個不一樣的迴歸函數可以使用