我在本网站和其他网站上查看了几个不同的答案,但我不太幸运地弄清楚如何计算分层查询中的 sibling 。
我正在使用 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 级以下的 sibling 的数量相加,而不是全部列出。但是,我在尝试解决问题时遇到了困难。
有没有正确的方法?谢谢!
最佳答案
这将计算每个员工在级别 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;
关于oracle10g - 分层查询和计算 sibling ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12575185/