网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.弥补Oracle数据库访问限制绕过的.
.如何转储B*Tree索引的分枝结构.
.Oracle10G R2(10.2.0.1)在AIX5.2.
.数据库容灾复制解决方案share Pl.
.UNIX下让ORACLE定时执行*.sql文件.
.存储参数(storage子句)含义及设.
.怎样修改查看Oracle字符集及怎样.
.ORA-02019:未找到远程数据库的连.
.哈希分区表使用时注意事项.
.Linux的信号机制.
.将EXP出来的数据IMP进不同的表空.
.如何有效地利用数据字典.
.Oralcle 10g Fedora Core X上快速.
.用UNIX的kill命令来终止Oracle的.
.利用Oracle的许可执行安全模式实.
.ORACLE在HP-UX下的系列问题处理(.
.Oracle数据库中的表连接方式及使.
.Oracle9i 数据库管理实务讲座(六.
.常用的档案, 与它们的延伸名称, .
.Oracle安全全接触(1).

理解数据库的统计集聚函数

发表日期:2008-2-9



  为了选用正确的函数,你必须具体地了解现在Oracle SQL中用到的一系列集聚函数。Oracle8和Oracle9都支持的函数包括:
  
   
  
  
  AVG
  CORR
  COUNT
  COVAR_POP
  COVAR_SAMP
  MAX
  MIN
  REGR_
  STDDEV
  STDDEV_POP
  STDDEV_SAMP
  SUM
  VAR_POP
  VAR_SAMP
  VARIANCE
   
  几乎所有的集聚函数都将忽略那些NULL列。但是有一个例外,那就是COUNT(*),这个函数将计算所有的纪录而不管是否存在NULL列。在一般集聚函数所有数据都为NULL时,集聚函数的返回值为NULL,但是COUNT(col)的返回值为零。
  
  MIN函数和MAX函数
  MIN函数和MAX函数根据排序后返回最小值和最大值。你应该明白那些函数都是基于对它们的数据类型的排序结果。为了避免排序错误,日期和数字都必须定义为与其对应的数据类型。例如,MAX(TO_CHAR(date))会把1月排在2月之前。
  
  STDDEV,STDDEV_POP,STDDEV_SAMP和VARIANCE,VAR_POP,VAR_SAMP
  
  标准差和方差是衡量数据扩散范围的标准。假如一列中的数据都相同的话,那么标准差和方差就为零。在实际情况中,标准差描述的是反映平均值的一个锥形曲线。对于现实世界人口,有68%的数据应在一个标准差之内,96%的数据应在2个标准差之内。
  
  据统计表明:人口的样本方差并不能很好的反映整体人口的方差,这个事实就决定了存在3个标准差函数和3个方差函数。通过以下的SQL脚本来看看它的作用:
  
  drop table agg;
  create table agg(n integer);
  begin
    for i in 0..1000 loop
      insert into agg values(i);
    end loop;
  end;
  /
  show errors;
  select 'Population' d,count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)
   from agg
  union
  select 'Sample',count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)
   from agg where mod(n,2) = 0
  union
  select 'Sample',count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)
   from agg where mod(n,10) = 0
  union
  select 'Sample',count(n),avg(n),stddev(n),stddev_pop(n),stddev_samp(n)
   from agg where mod(n,100) = 0;
  得到的结果是
  理解数据库的统计集聚函数
  虽然这些数据是人为计算得到的,并没有在此锥形曲线上,但是这个例子反映了_SAMP和_POP的差别。从这个例子看出,样本的STDDEV_POP(N)列的数据比样本的STDDE(N)列数据更接近实际的STDDECV(N)列数据。
  
  因此,当你应用STDDEV函数时,认真考虑你处理的是什么数据是非常重要的。假如你想得到一些数据的真实标准差,那么你就应该用STDDEV_SAMP。假如你只是处理一些小型的抽样样本,只希望得到人口标准差的近似值的话,那么你应该用STDDEV_POP。
  
  VAR_SAMP就是STDDEV_SAMP的平方,相似的VAR_POP就是STDDEV_POP的平方。这两个函数并不常用,原因是他们的成员都是带平方的。
  
  COVAR_POP 和 COVAR_SAMP
   
  
  协方差和标准差相似,但是协方差能衡量一列数据对其他列的影响。假如存在一列是不可改变的(意味着次列与其他列无任何关系),那么协方差就为零,表示位COVER_SAMP(n,0)。
  
  假如一列的变化和另一列有关,那么协方差值就会变大。COVER_POP适用于计算的人口样本方差的近似值,而COVER_SAMP则应该用于计算数据的实际协方差。
  
  CORR
  相关性是用于衡量相关系数的。它将两列的相关程度规格化为-1和1之间的一个数值。假如是1或者-1的话,就说明他们是完整的线性相关。表示位CORR(n,n)。
  
  假如相关性为零,那么意味着一个变量对另一个变量将没有影响。假如两列根本就没有改变,那就意味着这列的标准差为零,也就是说对其计算相关性是没有意义的,所以此时CORR的返回值为空。举例来说,CORR(n,1)的返回值将为空。
  
  REGR_
  假设已知两数据相关,回溯函数能通过已知数据画一条能反映他们的发展趋势的曲线。并能通过这条线来在已知数据的基础上估计得到新的数据。事实上,由于得到的结果一条线而不是数字——所有的结果都是通过图中的线描述出来的,所以说回溯函数是一系列与众不同的函数。在图中,我们认为第一表达式为“Y轴”,而第二表达式为“X轴”。
  
  回溯函数是我们能进行一些初步估计。
估计近似值的公式为:
  
  pred1 = (pred2 * regr_slope(eXPr1,expr2)) + regr_intercept(expr1,expr2)
  pred2 = (pred1 - regr_intercept(expr1,expr2)) / regr_slope(expr1,expr2)
  回溯函数要求有两个数型参数。假如你要对日期数据进行操作,那么你必须先将这些数据转换成线行数类型。在Oracle SQL中,最好的办法就是就这些日期间去一个参照日期,从而得到对应的不同的天数(天数的类型符合要求了)。
上一篇:Oracle9i的自动分段空间管理改善了分段存储的本质 人气:603
下一篇:如何使SQL Server数据库支持XML 人气:517
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐