НачатьНачать бесплатно

Кто ваш руководитель?

В этом упражнении мы будем работать с набором данных IT-организации, который хранится в таблице employee. Таблица содержит поля: ID (идентификатор сотрудника), Name (имя сотрудника) и Supervisor (идентификатор руководителя).

IT-организация состоит из различных ролей и уровней.

A section of the entire hierarchy

В организации есть один IT-директор (ID=1, Heinz Griesser, Supervisor=0), у которого есть множество подчинённых сотрудников. В подчинении у IT-директора находится менеджер по IT-архитектуре (ID=10, Andreas Sternig, Supervisor=1) с тремя подчинёнными. У Andreas Sternig значение Supervisor=1, что соответствует ID IT-директора.

Для начала ответим на вопрос: кто является руководителем каждого сотрудника?

Эту задачу мы решим с помощью рекурсивного запроса к набору данных.

Это упражнение является частью курса

Иерархические и рекурсивные запросы в SQL Server

Посмотреть курс

Инструкции к упражнению

  • Создайте CTE с именем employee_hierarchy.
  • Выберите данные IT-директора в качестве начального шага CTE, отфильтровав записи по его Supervisor ID.
  • Выполните объединение с таблицей employee, чтобы получить имя руководителя.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

-- 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.___;
Редактировать и запускать код