oracle 分析函数

一、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个不一样的回归函数可以使用

相关文章
相关标签/搜索