參考:
Oracle 9i 分析函数参考手册
http://www.cnoug.org/viewthread.php?tid=38387
Oracle 9i 分析函数参考手册
http://www.cnoug.org/viewthread.php?tid=38387
解决方案 »
- 在linux下安装oracle,是否要专门的用户和组
- 在Visual C++中如何使用oracle 的Pro*C编程!怎么设置?
- 在Oracle 中创建存储过程时,要传递参数时要用数组,请问该怎么弄呢?
- (各路高手请进,搞了两天没有搞出来)一个拼装SQL语句的问题
- rownum的问题,高手请进!急!
- 请问oracle在window 2000 server为什么安装不成功?
- 怎样在Oracle9i中倒入Oracle8.0.5倒出的*.dmp文件!
- 关于oracle的两个问题请教
- 菜鸟问一个关于SQL*Plus登录的问题
- 为什么我的plsql developer连接远程数据库之后,无法连接本地oracle
- 救急!救急!怎样在oralce中插入长度大于4000的字符串!
- 如何知道一台机器上,Oracle服务器的名字?
看看cnoug调优板块jametong也发过一篇,都不错。
另外这个叫分析函数,而不是over的用法
cnoug调优板块jametong也发过一篇
这个东东怎么找啊?能告诉一下吗?谢谢了
B C D
02 02 1
02 03 2
02 04 3
02 05 4
02 01 5
02 06 6
02 07 7
02 03 5
02 02 12
02 01 2
02 01 23select b,c,sum(d) e from a group by b,c
得到:
B C E
02 01 30
02 02 13
02 03 7
02 04 3
02 05 4
02 06 6
02 07 7而使用分析函数得到的结果是:
SELECT b, c, d, SUM(d) OVER(PARTITION BY b,c ORDER BY d) e FROM a
B C E
02 01 2
02 01 7
02 01 30
02 02 1
02 02 13
02 03 2
02 03 7
02 04 3
02 05 4
02 06 6
02 07 7
结果不一样,这样看还不是很清楚,我们把d的内容也显示出来就更清楚了:
SELECT b, c, d,SUM(d) OVER(PARTITION BY b,c ORDER BY d) e FROM a
B C D E
02 01 2 2 d=2,sum(d)=2
02 01 5 7 d=5,sum(d)=7
02 01 23 30 d=23,sum(d)=30
02 02 1 1 c值不同,重新累计
02 02 12 13
02 03 2 2
02 03 5 7
02 04 3 3
02 05 4 4
02 06 6 6
02 07 7 7