Поиск линий электропередач, требующих обслуживания
В таблице 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%'