统计部门的员工个数(员工个数=本部门人数+下级部门人数)
部门表:
员工表:
sql 语句:
with temp as(
select t1.deptid as id, t1.supdeptid parent, num, level levs,t1.deptname
from dept t1
left join (select deptid, count(t.deptid) num
from emp t
group by t.deptid) t2 on t1.deptid = t2.deptid
start with t1.supdeptid is null
connect by prior t1.deptid = t1.supdeptid)
select lpad(' ', 4 * levs, ' ')||id as id,lpad(' ', 4 * levs, ' ')||deptname as deptname,
(select nvl(num, 0) from temp where id = t.id) +
(select nvl(sum(num), 0)
from temp
connect by parent = prior id
start with parent = t.id) cnt
from temp t
查询结果:
oracle10g sql语句:
select a.root as id, nvl(sum(b.num), 0) num
from (select id, fid, connect_by_root(id) root
from (select d.deptid as id, d.supdepid as fid from dept d start with d.supdepid is null
connect by prior d.deptid = d.supdepid)
connect by prior id = fid) a
left join (select deptid, count(t.deptid) num from emp t group by t.deptid) b on a.id =
b.deptid
group by root
order by root;

- 大小: 23.5 KB

- 大小: 43.7 KB

- 大小: 22.7 KB
分享到:
相关推荐
Oracle数据库系统在处理层次数据或树形结构时,提供了强大的工具——递归查询。递归查询允许我们在数据表中处理嵌套级别的数据,这在权限查询、组织结构、产品分类等场景中尤其常见。本文将深入探讨Oracle中的树状...
### Oracle树操作(SQL查询成树状菜单) #### 一、Oracle树型查询基础 Oracle数据库提供了强大的树型数据处理功能,特别是通过`SELECT ... START WITH ... CONNECT BY ... PRIOR`语法,可以方便地对表中的数据按照...
可以使用`COUNT(DISTINCT LEVEL)`来统计树结构的层次数量: ```sql SELECT COUNT(DISTINCT LEVEL) AS "Level" FROM emp START WITH ename = 'KING' CONNECT BY PRIOR empno = mgr; ``` ##### 3. 格式化层次查询结果...
1. 层次模型:Oracle早期版本支持层次模型,其中数据以树形结构组织,但现代Oracle主要使用关系模型。 2. 关系模型:关系模型是最常见的数据模型,以表格形式表示数据,强调数据之间的关系。 三、Oracle对象关系...
1. **数据库概念**:了解数据库的基本概念,如数据模型(层次模型、网状模型、关系模型)、实体关系(ER)模型,以及数据库管理系统(DBMS)的作用。 2. **SQL语言**:Oracle 10g支持结构化查询语言(SQL),包括...
总结起来,Oracle层次查询和WITH函数为处理层级数据提供了强大而灵活的工具。层次查询能轻松遍历树状结构,而WITH函数则便于进行复杂的子查询操作,两者结合可以满足多种层次数据处理需求。在实际开发中,理解并熟练...
2. **层次查询**:使用CONNECT BY和START WITH进行层次结构查询。 #### 二、数据库管理 **1. Oracle的构件和组件** - **Oracle架构概述**:包括实例和数据库。 **2. 数据库的物理结构** 1. **控制文件**:存储...
- **Oracle层次树查询**:适用于处理具有层次结构的数据,例如组织结构、产品分类等。 - **Mergeinto应用**:这是一种高效的数据合并方式,可以用于更新或插入数据。 - **Truncatetable**:快速清空表中的所有数据而...
1. **定期收集统计信息**:准确的统计信息有助于Oracle做出更好的执行计划。 2. **自动统计与手动统计**:结合使用自动和手动统计,确保关键表和索引的统计信息及时更新。 七、回滚段管理 1. **合理设置回滚段**:...
在提供的内容中,我们看到了类似B树结构的分布模式,这可能是在解释B树索引的层次结构。 1. **根块(Root block)**:它是索引结构的起点,包含指向索引的分支块的指针。通常,根块存储在高速缓存中,以便快速访问...
- **数据模型**:讲解常见的数据模型,如层次模型、网状模型、关系模型等,并分析它们的特点及适用场景。 - **SQL语言基础**:介绍SQL语言的基本语法和命令,包括数据定义语言(DDL)、数据操纵语言(DML)、数据...
WITH子句(也称为公用表表达式,CTE)配合CONNECT BY语句可用于执行递归查询,解决层次结构问题,如组织架构、产品分类树等。 八、游标 游标(Cursor)允许逐行处理查询结果,对于循环处理大量数据或在PL/SQL代码中...
工作队伍结构涉及到如何定义员工的层次和关系,如团队、项目组等。这部分内容将讲解如何配置和维护这些结构,以便于管理人员配置、跟踪员工的工作分配,并进行有效的资源规划。 3. **定义工作队伍记录(Define ...
总结来说,`START WITH...CONNECT BY PRIOR`子句是Oracle SQL处理树形数据的关键工具,通过它可以有效地查询和展示层次关系的数据。理解并熟练运用这个子句,能够帮助你在处理具有层级结构的业务场景时更加游刃有余...
B树索引适用于范围查询,而 bitmap 索引适合于多列联接查询。避免过度使用索引,因为它们在插入、更新时会增加维护成本。 3. **绑定变量**:使用绑定变量可以防止硬解析,提高SQL复用率,从而减少解析开销和内存...
#### 树形数据处理 **查询基本语法:** - 使用`CONNECT BY`子句和`PRIOR`关键字来表达父子关系。 **关于PRIOR:** - PRIOR用于指定父节点的列名,例如:`CONNECT BY PRIOR id = parent_id`。 **节点和分支的裁剪...
- **Oracle 实现**: Oracle主要使用左深树,除非查询本身需要布式树或计划中包含哈希连接。此外,还采用了穷尽搜索小规模连接的顺序,以及基于当前最佳计划的初始排序策略等。 ##### 1.4 不确定性 (Uncertainty) -...
- **GROUP BY统计报告**:通过分组计算统计数据。 - **分层查询**:层次查询,如CONNECT BY,用于处理树状结构数据。 - **ORACLE TIMEZONE**:处理时区转换,用于全球化应用。 - **正则表达式**:用于复杂的数据匹配...
- **Oracle 层次树查询**:一种特殊类型的查询,用于处理层级结构的数据。 - **Merge into 应用**:MERGE INTO语句用于根据匹配条件合并数据。 - **Truncate table**:快速清空表数据的操作。 - **绑定变量与非...