Как вычислить значение в строке, относительно предыдущей строки?

пример таблицы.
**id, месяц, количество товара**
и хочу добавить столбец- динамика то-есть это отношение нынешнего количества к предыдущему что б видеть, ч в предыдущем было количество 5, а сейчас 10- значит показатель должен быть 2
Как написать SQL в данном случае?
  • Вопрос задан
  • 1002 просмотра
Пригласить эксперта
Ответы на вопрос 2
freeExec
@freeExec
Участник OpenStreetMap
Почитайте вот статью про оконные функции. В вашем случае lag.
Вот пример из статью на вашу тему:
насколько очков новость отстает от предыдущей в рейтинге

SELECT
    id,
    section,
    header,
    score,
    row_number() OVER w        AS rating,
    lag(score) OVER w - score  AS score_lag
FROM news
WINDOW w AS (ORDER BY score DESC)
ORDER BY score desc;

id | section |  header   | score | rating | score_lag 
----+---------+-----------+-------+--------+-----------
  6 |       2 | Заголовок |    95 |      1 |          
  3 |       4 | Заголовок |    79 |      2 |        16
  8 |       3 | Заголовок |    36 |      3 |        43
  4 |       3 | Заголовок |    36 |      4 |         0
  5 |       2 | Заголовок |    34 |      5 |         2
  7 |       4 | Заголовок |    26 |      6 |         8
  1 |       2 | Заголовок |    23 |      7 |         3
  2 |       1 | Заголовок |     6 |      8 |        17
Ответ написан
Комментировать
djdeniro
@djdeniro
DeNet
попробуйте взять два последних поля, далее выведите разницу "количество товара"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы