始める無料で始める

あなたの上司は誰ですか?

この演習では、IT組織のデータセットを使用します。データはテーブル employee にあり、フィールドは ID(従業員のID)、Name(従業員名)、Supervisor(上司のID)です。

このIT組織は、複数の役割とレベルで構成されています。

A section of the entire hierarchy

組織には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ディレクターの Supervisor ID を条件にして情報を選択します。
  • 上司の名前を取得するために、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.___;
コードを編集して実行