Выборка записей где значение больше чем у родителя?

Для решения этой задачи необходимо использовать рекурсивный подход, так как требуется сравнивать значения с родительскими записями.

Предположим, что у нас есть таблица my_table, содержащая следующие столбцы:

- id - уникальный идентификатор записи
- value - значение записи
- parent_id - ссылка на родительскую запись

Сначала нам необходимо определить, какие записи являются родительскими и будут служить отправной точкой для сравнения значений. Мы можем сделать это с помощью запроса, который выбирает все записи, у которых нет родительской ссылки (parent_id равен NULL):

SELECT id, value
FROM my_table
WHERE parent_id IS NULL;

Далее, нам нужно сделать выборку всех записей, у которых значение (value) больше значения их родительской записи. Мы можем выполнить это с помощью рекурсивного запроса с использованием конструкции WITH RECURSIVE:

WITH RECURSIVE recursive_query (id, value, parent_id) AS (
    -- первая часть рекурсивного запроса: выбираем записи-родители
    SELECT id, value, parent_id
    FROM my_table
    WHERE parent_id IS NULL
    UNION ALL
    -- вторая часть рекурсивного запроса: выбираем записи, у которых значение больше значения родителя
    SELECT child.id, child.value, child.parent_id
    FROM my_table AS child
    INNER JOIN recursive_query AS parent
    ON child.parent_id = parent.id
    WHERE child.value > parent.value
)
-- итоговый запрос: выбираем все записи, у которых значение больше значения родителя
SELECT id, value
FROM recursive_query;

В результате выполнения этого запроса будут выбраны все записи из таблицы my_table, у которых значение (value) больше значения их родительской записи.

Учтите, что данное решение предполагает, что уровень вложенности неограничен. Также необходимо учитывать производительность при работе с большими объемами данных и оптимизировать индексы для улучшения производительности запроса.