gpt4 book ai didi

oracle - 是否可以使用 Oracle 获取每个级别的员工汇总计数?

转载 作者:行者123 更新时间:2023-12-04 05:58:38 25 4
gpt4 key购买 nike

假设您在 Oracle 中有一个标准的组织层次结构表。为简单起见,假设您在该 Org 表中有一列显示直接分配给该组织的员工数量。

create table org (
org_id NUMBER(5),
parent_org_id NUMBER(5),
emp_count NUMBER (5)
);

insert into org values (1, NULL, 200);
insert into org values (2, 1, 50);
insert into org values (3, 1, 100);
insert into org values (4, 2, 100);

是否有可能获得如下所示的结果集:
OrgID, Count
1, 450
2, 150
3, 100
4, 100

也就是说,没有 450 人直接分配给 OrgId1,但是当你将 OrgID1 和 BELOW 中的每个人加起来时,有 350 人直接或间接分配。同样,对于 OrgId2,直接分配了 50 个 + 在其下分配的 100 个(在 Org 4 中)。

简单的想法对吗?在 Oracle 中可以进行这种查询吗?

最佳答案

这可以通过分层查询以“错误”的方式完成 - 没有 start with子句意味着每一行都是一个起点,然后遍历树到每个叶子,并按每个起点对结果进行分组:

select org_id, sum(emp_count) as emp_count
from ( select connect_by_root(org_id) as org_id, emp_count
from org
connect by parent_org_id=(prior org_id) )
group by org_id;

/*
ORG_ID EMP_COUNT
---------------------- ----------------------
1 450
2 150
4 100
3 100
*/

关于oracle - 是否可以使用 Oracle 获取每个级别的员工汇总计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9203060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com