3

このサイトや他のサイトでいくつかの異なる回答を見てきましたが、階層クエリで兄弟を数える方法を理解するのにあまり運がありません。

私はオラクル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 に答える