oracle9i学习笔记之十七 分级取回数据

2023-12-16 21:32

本文主要是介绍oracle9i学习笔记之十七 分级取回数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.分级查询

  SELECT   [LEVEL],column,expr...
  FROM     table
  [WHERE   condition(s)]
  [START WITH condition(s)]
  [CONNECT BY PRIOR condition(s)];

  LEVEL:对每行返回一个级别,对根行LEVEL伪列返回1;对孩子的LEVEL伪列返回2,以此类推
  START WITH:指定层次的根行
  CONNCT BY PRIOR:指定查询的方向

1)START WITH子句可以和任何有效的条件协同使用
  START WITH column1=value

2)使用emp表,从名字是KING的雇员开始
  ...START WITH ename='KING'
  ...START WITH mgr IS NULL

3)一个START WITH条件可以包含子查询
  ...START WITH empno=(SELECT empno
                       FROM   emp
                       WHERE  ename='KING')
  CONNECT BY PRIOR column1=column2

4)使用emp表从顶向下遍历:
  ...CONNECT BY PRIOR empno=mgr

5)使用emp表从底向上遍历:
  ...CONNECT BY empno=PRIOR mgr

2.遍历树:

1)自顶向下遍历

例: 
  SELECT level,empno,ename||' 雇员的经理是 '||
  PRIOR  ename "雇佣关系"
  FROM   emp
  START  WITH ename='KING'
  CONNECT BY PRIOR empno=mgr;
结果:
      LEVEL  EMPNO        雇佣关系 
       1     7839    KING 雇员的经理是 
       2     7566    JONES 雇员的经理是 KING 
       3     7788    SCOTT 雇员的经理是 JONES 
       4     7876    ADAMS 雇员的经理是 SCOTT 
       3     7902    FORD 雇员的经理是 JONES 
       4     7369    SMITH 雇员的经理是 FORD 
       2     7698    BLAKE 雇员的经理是 KING 
       3     7499    ALLEN 雇员的经理是 BLAKE 
       3     7521    WARD 雇员的经理是 BLAKE 
       3     7654    MARTIN 雇员的经理是 BLAKE 
       3     7844    TURNER 雇员的经理是 BLAKE 
       3     7900    JAMES 雇员的经理是 BLAKE 
       2     7782    CLARK 雇员的经理是 KING 
       3     7934    MILLER 雇员的经理是 CLARK 

2)从底向上遍历
 
例:
  SELECT level,empno,ename,job,mgr
  FROM   emp
  START WITH empno=7876
  CONNECT BY empno=PRIOR mgr;
结果:
     LEVEL  EMPNO  ENAME  JOB       MGR 
       1    7876   ADAMS  CLERK     7788 
       2    7788   SCOTT  ANALYST   7566 
       3    7566   JONES  MANAGER   7839 
       4    7839   KING   PRESIDENT    


   
3.用LEVEL和LPAD格式化分级报告
  创建一个报告,显示公司的管理层,从最高级别开始,缩进下面跟随的级别

例:
  SELECT LEVEL,LPAD(ename,LENGTH(ename)+(LEVEL*2)-2,'-') AS org_chart
  FROM   emp
  START WITH ename='KING'
  CONNECT BY PRIOR empno=mgr;

结果:
     LEVEL     ORG_CHART
      1        KING 
      2        --JONES 
      3        ----SCOTT 
      4        ------ADAMS 
      3        ----FORD 
      4        ------SMITH 
      2        --BLAKE 
      3        ----ALLEN 
      3        ----WARD 
      3        ----MARTIN 
      3        ----TURNER 
      3        ----JAMES 
      2        --CLARK 
      3        ----MILLER 

4.修剪分支
1)用WHERE子句去除一个结点
 
  WHERE ename!='SCOTT'

2)用CONNECT BY子句去除一个分支
 
  CONNECT BY PRIOR
  empno=mgr
  AND ename!='SCOTT'

 

练习
1.设计一个表,记录客户在一段时间内所拨打电话的树形层次结构。如A用户5点打给B用户,5点10分打给C用户;B用户5点5分打给D用户;D用户6点打给E用户等等
  根据时间段来查询层次关系

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/luyangever/archive/2008/12/13/3510765.aspx

这篇关于oracle9i学习笔记之十七 分级取回数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/501956

相关文章

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

使用MongoDB进行数据存储的操作流程

《使用MongoDB进行数据存储的操作流程》在现代应用开发中,数据存储是一个至关重要的部分,随着数据量的增大和复杂性的增加,传统的关系型数据库有时难以应对高并发和大数据量的处理需求,MongoDB作为... 目录什么是MongoDB?MongoDB的优势使用MongoDB进行数据存储1. 安装MongoDB

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Python实现将实体类列表数据导出到Excel文件

《Python实现将实体类列表数据导出到Excel文件》在数据处理和报告生成中,将实体类的列表数据导出到Excel文件是一项常见任务,Python提供了多种库来实现这一目标,下面就来跟随小编一起学习一... 目录一、环境准备二、定义实体类三、创建实体类列表四、将实体类列表转换为DataFrame五、导出Da

Python实现数据清洗的18种方法

《Python实现数据清洗的18种方法》本文主要介绍了Python实现数据清洗的18种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录1. 去除字符串两边空格2. 转换数据类型3. 大小写转换4. 移除列表中的重复元素5. 快速统

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

在Pandas中进行数据重命名的方法示例

《在Pandas中进行数据重命名的方法示例》Pandas作为Python中最流行的数据处理库,提供了强大的数据操作功能,其中数据重命名是常见且基础的操作之一,本文将通过简洁明了的讲解和丰富的代码示例,... 目录一、引言二、Pandas rename方法简介三、列名重命名3.1 使用字典进行列名重命名3.编

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram