• Как найти сумму глубин поддеревьев с помощью SQL-запроса?

    @AshotTakiev Автор вопроса
    В итоге получился такой рекурсивный запрос, который выводит сумму глубин поддеревьев для каждого узла дерева.
    На каждом проходе мы строим таблицу, содержащую id узла и путь от от родителя. После чего для каждой вершины считаем, какое количество путей, содержит id вершины в качестве родителя.
    WITH RECURSIVE tree_depth as (
      SELECT id, array[id] AS parents, 0 AS level
      FROM Keyword
    
      UNION ALL
    
      SELECT C.id, P.parents || C.id, P.level + 1 as level FROM Keyword C
      JOIN tree_depth P ON P.id = C.parent_id
    )
    Select parents[1], COUNT(*) from tree_depth group by parents[1] order by parents[1];
    Ответ написан
    Комментировать