oracle 10g函数大全--分析函数
oracle分析函数--sql*plus环境。
一、总体介绍。
12.1 分析函数如何工作。
语法 function_name(《参数》,…over ( 1. 值域窗(range window)
range n preceding 仅对数值或日期类型有效,选定窗为排序后当前行之前,某列(即排序列)值大于/小于(当前行该列值 –/n)的所有行,因此与order by子句有关系。
2. 行窗(row window)
rows n preceding 选定窗为当前行及之前n行。
还可以加上between and 形式,例如range between m preceding and n following
函数 **g( expr)
一组或选定窗中表达式的平均值 corr(expr, expr) 即covar_pop(exp1,exp2) /stddev_pop(expr1) *stddev_pop(expr2)),两个表达式的互相关,-1(反相关) ~1(正相关),0表示不相关
count( <计数
covar_pop(expr, expr) 总体协方差
covar_samp(expr, expr) 样本协方差
cume_dist 累积分布,即行在组中的相对位置,返回0 ~ 1
dense_rank 行的相对排序(与order by搭配),相同的值具有一样的序数(null计为相同),并不留空序数
first_value 一个组的第一个值
lag(expr, ,访问之前的行,offset是缺省为1 的正数,表示相对行数,default是当超出选定窗范围时的返回值(如第一行不存在之前行)
last_value 一个组的最后一个值
lead(expr, ,访问之后的行,offset是缺省为1 的正数,表示相对行数,default是当超出选定窗范围时的返回值(如最后行不存在之前行)
max(expr) 最大值
min(expr) 最小值
ntile(expr) 按表达式的值和行在组中的位置编号,如表达式为4,则组分4份,分别为1 ~ 4的值,而不能等分则多出的部分在值最小的那组
percent_rank 类似cume_dist,1/(行的序数 - 1)
rank 相对序数,答应并列,并空出随后序号
ratio_to_report(expr) 表达式值 / sum(表达式值)
row_number 排序的组中行的偏移
stddev(expr) 标准差
stddev_pop(expr) 总体标准差
stddev_samp(expr) 样本标准差
sum(expr) 合计
var_pop(expr) 总体方差
var_samp(expr) 样本方差
variance(expr) 方差
regr_ xxxx(expr, expr) 线性回归函数
regr_slope:返回斜率,等于covar_pop(expr1, expr2) /var_pop(expr2)
regr_intercept:返回回归线的y截距,等于。
**g(expr1) -regr_slope(expr1, expr2) ***g(expr2)
regr_count:返回用于填充回归线的非空数字对的数目。
regr_r2:返回回归线的决定系数,计算式为:
if var_pop(expr2) =0 then return null
if var_pop(expr1) =0 and var_pop(expr2) !0 then return 1
if var_pop(expr1) >0 and var_pop(expr2 !=0 then
return power(corr(expr1,expr),2)
regr_**gx:计算回归线的自变量(expr2)的平均值,去掉了空对(expr1, expr2)后,等于**g(expr2)
regr_**gy:计算回归线的应变量(expr1)的平均值,去掉了空对(expr1, expr2)后,等于**g(expr1)
regr_sxx: 返回值等于regr_count(expr1, expr2) *var_pop(expr2)
regr_syy: 返回值等于regr_count(expr1, expr2) *var_pop(expr1)
regr_sxy: 返回值等于regr_count(expr1, expr2) *covar_pop(expr1, expr2)
首先:创建表及接入测试数据。
create table students
id number(15,0),area varchar2(10),stu_type varchar2(2),score number(20,2));
insert into students values(1, '111', g', 80 );
insert into students values(1, '111', j', 80 );
insert into students values(1, '222', g', 89 );
insert into students values(1, '222', g', 68 );
insert into students values(2, '111', g', 80 );
insert into students values(2, '111', j', 70 );
insert into students values(2, '222', g', 60 );
insert into students values(2, '222', j', 65 );
insert into students values(3, '111', g', 75 );
insert into students values(3, '111', j', 58 );
insert into students values(3, '222', g', 58 );
insert into students values(3, '222', j', 90 );
insert into students values(4, '111', g', 89 );
insert into students values(4, '111', j', 90 );
insert into students values(4, '222', g', 90 );
insert into students values(4, '222', j', 89 );
commit;
二、具体应用:
1、分组求和:
1)group by子句
-a、grouping sets
select id,area,stu_type,sum(score) score
from students
group by grouping sets((id,area,stu_type),(id,area),id)
order by id,area,stu_type;
理解grouping sets
select a, b, c, sum( d ) from t
group by grouping sets ( a, b, c )
等效于。select * from (
select a, null, null, sum( d ) from t group by a
union all
select null, b, null, sum( d ) from t group by b
union all
select null, null, c, sum( d ) from t group by c
-b、rollup
select id,area,stu_type,sum(score) score
from students
group by rollup(id,area,stu_type)
order by id,area,stu_type;
理解rollup
select a, b, c, sum( d )
from t
group by rollup(a, b, c);
等效于。select * from (
select a, b, c, sum( d ) from t group by a, b, c
union all
select a, b, null, sum( d ) from t group by a, b
union all
select a, null, null, sum( d ) from t group by a
union all
select null, null, null, sum( d ) from t
-c、cube
select id,area,stu_type,sum(score) score
from students
group by cube(id,area,stu_type)
order by id,area,stu_type;
理解cube
select a, b, c, sum( d ) from t
group by cube( a, b, c)
Oracle10g安装教程
刚刚接触oracle的人来说,从那里学,如何学,有那些工具可以使用,应该执行什么操作,一定回感到无助。所以在学习使用oracle之前,首先来安装一下oracle 10g,在来掌握其基本工具。俗话说的好 工欲善其事,必先利其器。我们开始吧!首先将oracle 10g的安装光盘放入光驱,如果自动运行,一...
3 安装oracle10g
1.安装oracle,设置密码。2.在oracle数据库命令行里敲 conn system 密码 3.创建新用户。create user 用户名 identified by 密码 授权。grant 权限,权限。to 用户名 一般授予这两个权限 grant connect,resource to 用户...
oracle10g详细安装教程
1.关闭防火墙。2.如果安装过oracle数据库要完全卸载以后再安装。3.找到安装文件下的ora10g server install 点下一步 点下一步 注意安装目录中不要出现中文及空格等一些特殊字符。点下一步 点下一步 注意 一点要记住全局数据库名,和sid 可以使用默认值。注意安装目录中不要出现...