2012-09-25 29 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

優秀!非常感謝。看起來像我的邏輯是愚蠢的這個查詢。我試着對它們進行計數,但是我沒有用計數來引導查詢,並且像你所建議的那樣做了一個內聯視圖。這對我來說很有意義,創建一個臨時表可以執行START WITH employees.manager_id = employees2.employee_id。再次感謝!! –