论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> ORACLE认证 >> IT正文
Oracle层次查询和分析应用在号段选取
 作者:佚名     2007-3-15 13:29:23        来源:不详  浏览次数:

  1. 问题的提出

  在实际工作中,我们常常会碰到号段选取的问题,例如:一组连续的数,去掉中间一些数,要求出剩下的数的区间(即号段)

  例如:一串数字为1,2,3,4,7,9,10,则号段为1-4,7-7,9-10

  知道号段的起止,要求出该号段内所有的数

  例如:号段为1-3,15-15,则号段内所有的数为1,2,3,15

  一组数,中间可能有断点,要求出缺失的数

  例如:一串数字为1,2,3,4,7,9,10,则缺失的数为5,6,8

  已知大号段范围及已用号段范围,求可用号段范围

  例如:大号段范围0-999,已用号段范围0-200,399-599,则可用号段范围为201-398,600-999

  2. 基础知识

  先做下热身运动,回顾一下层次查询和lead/lag函数的运用。

  2.1 伪列rownum和level

  伪列就是并非在表中真正存在的列。已有很多资料介绍rownum和level这两个伪列。这里只想强调一点,伪列是只针对结果集的。

  2.2 利用层次查询构造连续的数

  产生5~8这4个连续的数

  select * from (select rownum+4 from dual connect by rownum<5);

  select * from (select level+4 from dual connect by level<5);

  以8月为界,例如2005年8月1日,之前的在校学生入学年份为2001~2004,之后的为2002~2005.求当前日期下的在校学生入学年份:

  select * from (select to_char(add_months(sysdate, 4), 'yyyy') - rownum from dual connect by rownum<5);

  2.3 用分析函数Lead和Lag获得相邻行的字段值

select rn, lag(rn)over(order by rn) previos, lead(rn)over(order by rn) next from (select rownum+4 rn from dual connect by rownum<5);

RN PREVIOS NEXT
---------- ---------- ----------
5 6
6 5 7
7 6 8
8 7

  简单的说,在这里,Lag是获得前一行的内容,而Lead是获得后一行的内容。

select rn, lag(rn,2,-1)over(order by rn) previos, lead(rn,2,-1) over(order by rn) next from (select rownum+4 rn from dual connect by rownum<5);

RN PREVIOS NEXT
---------- ---------- ----------
5 -1 7
6 -1 8
7 5 -1
8 6 -1

  这里,通过指定offset参数来获得两行前的内容和两行后的内容,如果offset超出范围并且未设定默认值-1,那么系统会自动将其值设为NULL.

[1] [2] [3] 下一页  



责任编辑:lss
  相关新闻
Spring MVC framework总体分析
06年9月23日计算机二级Access答案汇总(网友提供)
06年9月计算机等级考试二级VF笔试试卷(Word版)
06年9月计算机等级考试二级Access官方标准试卷
JSF经典视图技术-Facelets 实例解析
Spring MVC framework总体分析
WebWork拦截器(Interceptor)使用方法
Oracle中国前员工述说公司高层内部纷争史
Wicket初次接触之HelloWorld
Oracle身份管理套件帮助企业进行安全管理
数据库系统工程师:NBU备份ORACLE时Code 29错误
ORACLE中用一条SQL实现其它进制到十进制的转换
06年9月23日计算机二级Access答案汇总(网友提供)
06年9月计算机等级考试二级Access官方标准试卷
06年9月23日计算机等级考试二级Access标准答案
06年9月计算机等级三级网络技术笔试试卷(Word版)
06年9月计算机等级考试二级VF笔试试卷(Word版)
Oracle中国前员工述说公司高层内部纷争史
Oracle下调数据库许可价格 以适应多芯CPU
Oracle身份管理套件帮助企业进行安全管理
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号