动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
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教程 ]的信息



本月文章推荐
.SQL优化之操作符篇.
.Oracle数据库监听配置.
.ORACLE问答精选.
.ORACLE入门之APACHE WEB SERVER管.
.oracle data pump步骤.
.为什么编译的时候把mod_cookies编.
.关于关系数据库主键的讨论.
.oracle数据库中sql基础.
.Linux下架设FTP.
.WINDOWS系统下完全卸载ORACLE的方.
.postfix出现错误“fatal: unknow.
.Oracle 电子商务套件助企业成功地.
.如何建立一个与现存数据库相同,.
.sqlplus常用set指令.
.oracle热物理备份步骤.
.oracle为什么这么慢.
.Oracle10g中新的SQLoptimizerhin.
.关于三种JOIN的理解.
.Oracle 9i修改数据库的工作模式.
.关于在Windows中安装Oracle碰到O.

Oracle学习之Oracle分析函数(二)

发表日期:2008-2-9 |



  1. rank函数的介绍
  
  介绍完rollup和cube函数的使用,下面我们来看看rank系列函数的使用方法.
  
  问题2.我想查出这几个月份中各个地区的总话费的排名.
  
  Quote:
  
  为了将rank,dense_rank,row_number函数的差别显示出来,我们对已有的基础数据做一些修改,将5763的数据改成与5761的数据相同.
  1 update t t1 set local_fare = (
  2  select local_fare from t t2
  3   where t1.bill_month = t2.bill_month
  4   and t1.net_type = t2.net_type
  5   and t2.area_code = '5761'
  6* ) where area_code = '5763'
  07:19:18 SQL> /
  
  8 rows updated.
  
  Elapsed: 00:00:00.01
  
  我们先使用rank函数来计算各个地区的话费排名.
  07:34:19 SQL> select area_code,sum(local_fare) local_fare,
  07:35:25  2  rank() over (order by sum(local_fare) desc) fare_rank
  07:35:44  3 from t
  07:35:45  4 group by area_codee
  07:35:50  5
  07:35:52 SQL> select area_code,sum(local_fare) local_fare,
  07:36:02  2  rank() over (order by sum(local_fare) desc) fare_rank
  07:36:20  3 from t
  07:36:21  4 group by area_code
  07:36:25  5 /
  
  AREA_CODE   LOCAL_FARE FARE_RANK
  ---------- -------------- ----------
  5765      104548.72     1
  5761       54225.41     2
  5763       54225.41     2
  5764       53156.77     4
  5762       52039.62     5
  
  Elapsed: 00:00:00.01
  
  我们可以看到红色标注的地方出现了,跳位,排名3没有出现下面我们再看看dense_rank查询的结果.
  
  07:36:26 SQL> select area_code,sum(local_fare) local_fare,
  07:39:16  2  dense_rank() over (order by sum(local_fare) desc ) fare_rank
  07:39:39  3 from t
  07:39:42  4 group by area_code
  07:39:46  5 /
  
  AREA_CODE   LOCAL_FARE FARE_RANK
  ---------- -------------- ----------
  5765      104548.72     1
  5761       54225.41     2
  5763       54225.41     2
  5764       53156.77     3 这是这里出现了第三名
  5762       52039.62     4
  
  Elapsed: 00:00:00.00
  
  在这个例子中,出现了一个第三名,这就是rank和dense_rank的差别,rank假如出现两个相同的数据,那么后面的数据就会直接跳过这个排名,而dense_rank则不会,差别更大的是,row_number哪怕是两个数据完全相同,排名也会不一样,这个特性在我们想找出对应没个条件的唯一记录的时候又很大用处
  
  1 select area_code,sum(local_fare) local_fare,
  2   row_number() over (order by sum(local_fare) desc ) fare_rank
  3 from t
  4* group by area_code
  07:44:50 SQL> /
  
  AREA_CODE   LOCAL_FARE FARE_RANK
  ---------- -------------- ----------
  5765      104548.72     1
  5761       54225.41     2
  5763       54225.41     3
  5764       53156.77     4
  5762       52039.62     5
  
  在row_nubmer函数中,我们发现,哪怕sum(local_fare)完全相同,我们还是得到了不一样排名,我们可以利用这个特性剔除数据库中的重复记录.
  
  这个帖子中的几个例子是为了说明这三个函数的基本用法的. 下个帖子我们将具体介绍他们的一些用法.
  
  2. 三个函数的基本用法
  
  a. 取出数据库中最后入网的n个用户
  select user_id,tele_num,user_name,user_status,create_date
  from (
  select user_id,tele_num,user_name,user_status,create_date,
  rank() over (order by create_date desc) add_rank
  from user_info
  )
  where add_rank <
= :n;
  
  b.根据object_name删除数据库中的重复记录
  create table t as select obj#,name from sys.obj$;
  再insert into t1 select * from t1 数次.
  delete from t1 where rowid in (
  select row_id from (
  select rowid row_id,row_number() over (partition by obj# order by rowid ) rn
  ) where rn <> 1
  );
  
  c. 取出各地区的话费收入在各个月份排名.
  SQL> select bill_month,area_code,sum(local_fare) local_fare,
  2   rank() over (partition by bill_month order by sum(local_fare) desc) area_rank
  3 from t
  4 group by bill_month,area_code
  5 /
  
  BILL_MONTH   AREA_CODE      LOCAL_FARE AREA_RANK
  --------------- --------------- -------------- ----------
  200405     5765         25057.74     1
  200405     5761         13060.43     2
  200405     5763         13060.43     2
  200405     5762         12643.79     4
  200405     5764         12487.79     5
  200406     5765         26058.46     1
  200406     5761         13318.93     2
  200406     5763         13318.93     2
  200406     5764         13295.19     4
  200406     5762         12795.06     5
  200407     5765         26301.88     1
  200407     5761         13710.27     2
  200407     5763         13710.27     2
  200407     5764         13444.09     4
  200407     5762         13224.30     5
  200408     5765         27130.64     1
  200408     5761         14135.78     2
  200408     5763         14135.78     2
  200408     5764         13929.69     4
  200408     5762         13376.47     5
  
  20 rows selected.
  SQL>
  
  3. lag和lead函数介绍
  
  取出每个月的上个月和下个月的话费总额
  
  1 select area_code,bill_month, local_fare cur_local_fare,
  2   lag(local_fare,2,0) over (partition by area_code order by bill_month ) pre_local_fare,
  3   lag(local_fare,1,0) over (partition by area_code order by bill_month ) last_local_fare,
  4   lead(local_fare,1,0) over (partition by area_code order by bill_month ) next_local_fare,
  5   lead(local_fare,2,0) over (partition by area_code order by bill_month ) post_local_fare
  6 from (
  7   select area_code,bill_month,sum(local_fare) local_fare
  8   from t
  9   group by area_code,bill_month
  10* )
  SQL> /
  AREA_CODE BILL_MONTH CUR_LOCAL_FARE PRE_LOCAL_FARE LAST_LOCAL_FARE NEXT_LOCAL_FARE POST_LOCAL_FARE
  --------- ---------- -------------- -------------- --------------- --------------- ---------------
  5761   200405     13060.433       0        0    13318.93    13710.265
  5761   200406      13318.93       0    13060.433    13710.265    14135.781
  5761   200407     13710.265   13060.433    13318.93    14135.781        0
  5761   200408     14135.781    13318.93    13710.265        0        0
  5762   200405     12643.791       0        0    12795.06    13224.297
  5762   200406      12795.06       0    12643.791    13224.297    13376.468
  5762   200407     13224.297   12643.791    12795.06    13376.468        0
  5762   200408     13376.468    12795.06    13224.297        0        0
  5763   200405     13060.433       0        0    13318.93    13710.265
  5763   200406      13318.93       0    13060.433    13710.265    14135.781
  5763   200407     13710.265   13060.433    13318.93    14135.781        0
  5763   200408     14135.781    13318.93    13710.265        0 right">(出处:清风软件下载学院)
上一篇:ORA-00600 2262错误解决 人气:471
下一篇:日期运用union的一种奇怪现象及解决 人气:292
浏览全部Oracle教程的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-24 Sablog-X v2.0 预览版
2008-7-24 帝国备份王EmpireBak 2008 正式版
2008-7-24 网趣网上购物系统时尚版 v8.2
2008-7-24 纵横B2B电子商务系统XYECS!B2B v
2008-7-24 e路小说小偷 v1.2.0723
2008-7-24 凌风美女图片站程序 v2.2
2008-7-24 TOM15电影收索程序
2008-7-24 清风信息自动采集生成系统 v1.0
2008-7-24 QQ邮箱编辑器 v1.0 (小小菜刀ASP
2008-7-19 UltraEdit 简体中文增强版 14.10
2008-7-19 CentOS 5.2 i386 LiveCD
2008-7-19 Snapture多功能相机 v1.4
2008-7-19 iAcces中文输入法 v1.0Build016
2008-7-19 Cookbook烹饪秘籍 v2.5
2008-7-19 苹果专用DVD转换工具 v1.1.59汉化
2008-7-19 Modem修复软件ZiPhone修改版04.0
2008-7-19 AgileMessenger即时通讯工具美化
2008-7-19 Sketches画图软件 v0.7b6破解版


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵