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

Поиск линий электропередач, требующих обслуживания

В таблице GridStructure уже определены поля, описывающие связи между линиями (EquipmentID, EquipmentID_To, EquipmentID_From), а также характеристики линий (например, Description, ConditionAssessment, VoltageLevel).

Ваша задача — найти линии, связанные с линией EquipmentID = 3, у которых ConditionAssessment равно bad или repair, а VoltageLevel равно HV. Это позволит ответить на следующий вопрос:

Какие линии необходимо заменить или отремонтировать с учётом их описания и текущего состояния?

Для поиска связанных линий создайте CTE, а затем примените фильтрацию по нужным характеристикам.

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

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

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

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

  • Определите CTE maintenance_List.
  • Начните обход с линии 3.
  • Соедините GridStructure с maintenance_List по соответствующим конечным точкам.
  • Используйте LIKE, чтобы отфильтровать линии электропередач с ConditionAssessment равным exchange или repair и VoltageLevel равным HV.

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

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

-- Define the table CTE
___ ___ (Line, Destination, Source, Description, ConditionAssessment, VoltageLevel) ___ (
	SELECT 
  		EquipmentID,
  		EquipmentID_To,
  		EquipmentID_From,
  		Description,
  		ConditionAssessment,
  		VoltageLevel
  	FROM GridStructure
 	-- Start the evaluation for line 3
	___ EquipmentID = ___
	UNION ALL
	SELECT 
		Child.EquipmentID, 
  		Child.EquipmentID_To,
  		Child.EquipmentID_FROM,
  		Child.Description,
  		Child.ConditionAssessment,
  		Child.VoltageLevel
	FROM GridStructure Child
  		-- Join GridStructure with CTE on the corresponding endpoints
  		___ maintenance_List 
    	ON maintenance_List.Line = Child.___)
SELECT Line, Description, ConditionAssessment 
FROM maintenance_List
-- Filter the lines based on ConditionAssessment and VoltageLevel
WHERE 
    (ConditionAssessment ___ '%exchange%' ___ ConditionAssessment ___ '%repair%') ___ 
     VoltageLevel LIKE '%HV%'
Редактировать и запускать код