3

我在这个网站和其他网站上查看了几个不同的答案,但我没有多少运气弄清楚如何在分层查询中计算兄弟姐妹。

我正在使用 Oracle 10g。

SELECT LEVEL, last_name||', '||first_name AS Manager, count(employee_id)
FROM employees
START WITH manager_id IS NULL
CONNECT BY PRIOR employee_id = manager_id
GROUP BY level

这将返回 4 个级别和大约 80 名员工。我想将 2 级以下的兄弟姐妹的数量加起来,而不是全部列出。但是,我在试图弄清楚它时遇到了困难。

对正确的方式有任何推动吗?谢谢!

4

1 回答 1

2

这将计算每个员工在级别 1 和 2 的后代数量:

SELECT employee_id, manager_id, full_name, emp_level
    ,(
        SELECT COUNT(*)
        FROM employees
        START WITH employees.manager_id = employees2.employee_id
        CONNECT BY prior employee_id = manager_id
    ) descendents
FROM
(
    SELECT employee_id, manager_id, last_name||', '||first_name full_name, LEVEL emp_level
    FROM employees
    START WITH manager_id IS NULL
    CONNECT BY PRIOR employee_id = manager_id
) employees2
WHERE emp_level <= 2;
于 2012-09-25T06:24:57.337 回答