MySQL можно ли при использовании SELECT как-то ссылаться на предыдущую строку выборки?

Есть таблица:

CREATE TABLE `test` (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `num` INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY (`id`)
)

заполненная значениями num, например: 2, 5, 20.

Можно ли как-то сделать выборку типа:

SELECT num,num-[num из предыдущей выбранной строки] FROM test

чтобы получить на выходе такой ответ:

2, NULL
5, 3
20, 15

Ответы (1 шт):

Автор решения: arnold

Вы можете использовать функцию LAG() (доступна начиная с MySQL 8.0.22), которая позволяет выбирать значение столбца из предыдущей строки.

Как результат получится запрос:

SELECT num, LAG(num) OVER (ORDER BY id) - num AS diff
FROM test;
→ Ссылка