あなたの上司は誰ですか?
この演習では、IT組織のデータセットを使用します。データはテーブル employee にあり、フィールドは ID(従業員のID)、Name(従業員名)、Supervisor(上司のID)です。
このIT組織は、複数の役割とレベルで構成されています。

組織には1人のITディレクター(ID=1、Heinz Griesser、Supervisor=0)がいて、多くの部下がいます。ITディレクターの下にはITアーキテクチャマネージャー(ID=10、Andreas Sternig、Supervisor=1)がいて、3人の部下を持っています。Andreas Sternig の Supervisor=1 は、ITディレクターの ID を意味します。
まずは「各従業員の上司は誰か?」という問いに答えたいと思います。
この問題は、データセットに対して再帰的にクエリを実行して解決します。
この演習はコースの一部です
SQL Server における階層型クエリと再帰クエリ
演習の手順
- 名前が
employee_hierarchyのCTEを作成します。 - CTEの初期ステップとして、ITディレクターの
SupervisorID を条件にして情報を選択します。 - 上司の名前を取得するために、
employeeと結合(JOIN)します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
-- Create the CTE employee_hierarchy
WITH ___ AS (
SELECT
ID,
NAME,
Supervisor
FROM employee
-- Start with the IT Director
WHERE ___ = ___
UNION ALL
SELECT
emp.ID,
emp.NAME,
emp.Supervisor
FROM employee emp
JOIN employee_hierarchy
ON emp.Supervisor = employee_hierarchy.ID)
SELECT
cte.Name as EmployeeName,
emp.Name as ManagerName
FROM employee_hierarchy as cte
JOIN employee as emp
-- Perform the JOIN on Supervisor and ID
ON cte.___ = emp.___;