> Как определить в SQL, что узел является корневым, листом или внутренним узлом (Go)
Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы
Компании: Wildberries
Стек: Go
> Пример ответа
В SQL для определения типа узла (корневой, лист, внутренний) в иерархической структуре (например, дерево категорий или сотрудников) обычно используется самосоединение таблицы с полями id и parent_id. Вот пример запроса:
SQLSELECTid,CASEWHEN parent_id IS NULL THEN 'Root'WHEN id NOT IN (SELECT DISTINCT parent_id FROM tree WHERE parent_id IS NOT NULL) THEN 'Leaf'ELSE 'Inner'END AS node_typeFROM tree;
Объяснение:
- Корневой узел (Root):
parent_id IS NULL- узел не имеет родителя. - Лист (Leaf): узел не является родителем ни для одного другого узла - проверяется отсутствие его
idв столбцеparent_id. - Внутренний узел (Inner): все остальные случаи - узел имеет родителя и сам является родителем для других.
В Go при работе с такими данными (например, через database/sql) вы можете выполнить этот запрос и обработать результат, сопоставив строку node_type с константами или перечислением.
> Похожие задачи по Go
Как работает полнотекстовый индекс GIN в PostgreSQL
Почему в некоторых случаях используется сбалансированное дерево вместо хэш-таблицы
Какие доводы и обстоятельства влияют на решение о делении или объединении сервисов
Для чего лучше подходят синхронные и асинхронные репликации
> Похожие задачи по backend
Как работает полнотекстовый индекс GIN в PostgreSQL
Почему в некоторых случаях используется сбалансированное дерево вместо хэш-таблицы
Какие доводы и обстоятельства влияют на решение о делении или объединении сервисов
Для чего лучше подходят синхронные и асинхронные репликации
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью