网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
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数据库分页的显.
.手工创建oracle数据库.
.Linux中给Python2.2加DCOracle模.
.Oracle 和 MIcrosoft SQL 的不同.
.UNIX与Windows 2000上Oracle的差.
.Oarcle学习笔记之--- FAQ收集.
.用Oracle 10g列值掩码技术隐藏敏.
.与数据库无关的处理放到数据库以.
.ORACLE 8i,9i 表连接方法全介绍.
.Oracle 10g for Windows 32bit安.
.Oracle DBA 启动和关闭例程试题选.
.Oracle两年内不再收购 瞄准中间件.
.常见数据库系统之比较 Oracle数据.
.如何在Oracle的报警日志添加自定.
.详细讲解Oracle数据库9i穿过防火.
.rebuild和rebuild online的区别.
.一些oracle的论坛和网站.
.Oracle数据库及应用程序优化.
.Oracle中独一无二的Cache对象.
.单机上配置9i standby.

ORACLE OLAP函数语法的总结

发表日期:2008-2-9


Oracle OLAP 函数
      最近这个东东用得非凡多,总结了一下 。 语法: FUNCTION_NAME(,,...)
        OVER
        ()
OLAP函数语法四个部分:
1、function本身 用于对窗口中的数据进行操作;
2、partitioning clause 用于将结果集分区;
3、order by clause 用于对分区中的数据进行排序;
4、windowing clause 用于定义function在其上操作的行的集合,即function所影响的范围。 一、order by对窗口的影响
不含order by的:
SQL> select deptno,sal,sum(sal) over()
  2  from emp;
不含order by时,默认的窗口是从结果集的第一行直到末尾。
含order by的:
SQL> select deptno,sal,
  2         sum(sal) over(order by deptno) as sumsal
  3  from emp;
当含有order by时,默认的窗口是从第一行直到当前分组的最后一行。 二、用于排列的函数
SQL> select empno, deptno, sal,
  2         rank() over
  3         (partition by deptno order by sal desc nulls last) as rank,
  4         dense_rank() over
  5         (partition by deptno order by sal desc nulls last) as dense_rank,
  6         row_number() over
  7         (partition by deptno order by sal desc nulls last) as row_number
  8   from  emp; 三、用于合计的函数
SQL> select deptno,sal,
  2         sum(sal) over (partition by deptno) as sumsal,
  3         avg(sal) over (partition by deptno) as avgsal,
  4         count(*) over (partition by deptno) as count,
  5         max(sal) over (partition by deptno) as maxsal
  6    from emp; 四、开窗语句 1、rows窗口: "rows 5 preceding"     适用于任何类型而且可以order by多列。    SQL> select deptno,ename,sal,
          2         sum(sal) over (order by deptno rows 2 preceding) sumsal
          3    from emp; rows 2 preceding:将当前行和它前面的两行划为一个窗口,因此sum函数就作  用在这三行上面
SQL> select deptno,ename,sal,
  2         sum(sal) over
  3         (partition by deptno order by ename rows 2 preceding) sumsal
  4    from emp
  5  order by deptno,ename;
加了partiton by分区后之后,rows 2 preceding(窗口)只在当前分区内生效,不会影响分区之外的行。
SQL> select ename,sal,hiredate,
  2         first_value(ename)over

  3         (order by hiredate asc rows 5 preceding) first_ename,
  4         first_value(hiredate) over
  5         (order by hiredate asc rows 5 preceding) first_hiredate
  6    from emp
  7  order by hiredate asc;
order by hiredate asc rows 5 preceding: order by之后,取当前行的前5行+当前行作为窗口(共6行)。
2、"range unbounded preceding" range unbounded preceding会把当前行之前的所有行都包含进来,但当partition by时: SQL> select deptno,ename,sal,
  2         sum(sal) over
  3         (partition by deptno order by deptno range unbounded preceding) sumsal
  4    from emp;
SQL> select deptno,ename,sal,
  2         sum(sal) over
  3         (order by deptno range unbounded preceding) sumsal
  4   from  emp;
这SQL句子和下面这SQL是等价的: select deptno,ename,sal,
       sum(sal) over (order by deptno) sumsal
  from  emp; 因为order by的默认窗口总是从结果集的第一行开始到它分组的最后一行。
而partiton by的默认窗口总是从分区的第一行开始。
3、range窗口: "range 100 preceding" 这个子句只适用于number和date,而且只能order by一列。
假如over()里asc排列,意思是[number-100,number]这样一个闭区间是它的窗口。
假如over()里desc排列,意思是[number,number+100]这样一个闭区间是它的窗口。
4、窗口总结 1、unbounded preceding:从当前分区的第一行开始,到当前行结束。
2、current row:从当前行开始,也结束于当前行。
3、[numeric eXPression] preceding:对于rows来说从当前行之前的第[numeric expression]行开始,到当前行结束。对range来说从小于数值
表达式的值开始,到当前行结束。
4、[numeric expression] following:与[numeric expression] preceding相反。

上一篇:在Oracle数据库里用存储过程定期分割表 人气:1061
下一篇:详细介绍ORACLE sqlplus命令 人气:1245
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐