OVER(PARTITIONBY..)及开窗函数Oracle认证考试

文章作者 100test 发表时间 2009:11:28 16:04:32
来源 100Test.Com百考试题网


"libai">

  一:分析函数over

  Oracle 从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是

  对于每个组返回多行,而聚合函数对于每个组只返回一行。

  下面通过几个例子来说明其应用。

  1:统计某商店的营业额。

  date sale

  1 20

  2 15

  3 14

  4 18

  5 30

  规则:按天统计:每天都统计前面几天的总额

  得到的结果:

  DATE SALE SUM

  ----- -------- ------

  1 20 20 --1天

  2 15 35 --1天+2天

  3 14 49 --1天+2天+3天

  4 18 67 .

  5 30 97 .

  2:统计各班成绩第一名的同学信息

  NAME CLASS S

  ----- ----- ----------------------

  fda 1 80

  ffd 1 78

  dss 1 95

  cfe 2 74

  gds 2 92

  gf 3 99

  ddd 3 99

  adf 3 45

  asdf 3 55

  3dd 3 78

  通过:

  --

  0select * from

  (

  0select name,class,s,rank()over (partition by class order by s desc) mm from t2

  )

  where mm=1

  --

  得到结果:

  NAME CLASS S MM

  ----- ----- ---------------------- ----------------------

  dss 1 95 1

  gds 2 92 1

  gf 3 99 1

  ddd 3 99 1

  注意:

  1.在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果

  2.rank()和dense_rank()的区别是:

  --rank()是跳跃排序,有两个第二名时接下来就是第四名

  --dense_rank()l是连续排序,有两个第二名时仍然跟着第三名

  3.分类统计 (并显示信息)


相关文章


oracle认证辅导:oracle多层游标嵌套Oracle认证考试
oracle删除指定用户所有表Oracle认证考试
oraclespatial空间数据表的初始化Oracle认证考试
Oracle循环向数据库中插入记录Oracle认证考试
OVER(PARTITIONBY..)及开窗函数Oracle认证考试
Oracle认证辅导:Oracle中表与视图的创建Oracle认证考试
oracle认证辅导:oracle问题解决ORA01219Oracle认证考试
oracle归档日志满了的处理方法Oracle认证考试
介绍ORACLEDATAGUARDOracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛