2012-09-25 6 views
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의 형제 수를 더하고 싶다. 그러나, 나는 그것을 파악하려고 노력하는 것을 계속하고있다.

올바른 방향으로 움직여야합니까? 감사!

답변

1

이 레벨 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; 
+0

우수한! 정말 고맙습니다. 내 논리가이 쿼리에 이상한 것처럼 보입니다. 나는 그것들을 세어 보았지만, 그 카운트로 질의를 시작하지는 않았고, 당신이 제안한 것과 같은 인라인 뷰를 수행했습니다. 필자는 이제 employees.manager_id = employees2.employee_id를 사용하여 START를 수행 할 수있는 임시 테이블을 만들었습니다. 다시 한 번 감사드립니다! –