SQLite вычислить разницу между двумя строками с условием

Рейтинг: 0Ответов: 1Опубликовано: 26.02.2023

У меня есть таблица tb1

id(KEY) idprod allregion
1 34 28
2 34 142
3 44 3
4 44 16
5 65 1132
6 65 768

Мне нужно вычислить разницу значений allregion между одинаковыми idprod и поместить это в столбик diff. Должно получиться вот так:

id(KEY) idprod allregion diff
1 34 28 0
2 34 142 114[142-28]
3 44 3 0
4 44 16 13[16-3]
5 65 1132 0
6 65 768 -364[768-1132]

*[в скобках указан пример вычислений]

Мой код

SELECT id, idprod, allregion, 
CASE WHEN idprod = LAG(idprod, 1) OVER (ORDER BY idprod desc, id desc) 
THEN (allregion - LAG(allregion, 1) OVER (ORDER BY id desc)) ELSE '0' 
END AS diff
FROM tb1

выдает таблицу с нулевыми значениями allregion

id(KEY) idprod allregion diff
1 34 0 0
2 34 0 114[142-28]
3 44 0 0
4 44 0 13[16-3]
5 65 0 0
6 65 0 -364[768-1132]

и я не могу понять почему, помогите, пожалуйста

Ответы

▲ 0

Попробуйте использовать PARTITION BY и функцию IFNULL()

SELECT id, idprod, allregion, 
IFNULL(allregion - LAG(allregion, 1) OVER (PARTITION BY idprod),0) AS diff
FROM tb1

введите сюда описание изображения