piolvior
@piolvior
начинающий продуктовый аналитик

Как найти разницу между текущим и предыдущим значением — postgresql?

Я пытаюсь написать запрос, который покажет мне разницу между текущим значением и предыдущим из результата запроса. Мне кажется, что это можно сделать методом "OFFSET" или "LEAD". Но я не понимаю, как.

Исходная таблица.
Name    Number  Dictionary  
---
Kate    300     Dict1       
Helena  200     Dict1       
Michael 150     Dict1       
John    100     Dict2

Я хочу выбрать только данные для Dict1 в своем запросе, а в новом столбце мне нужно увидеть разницу между текущим и предыдущим значениями из результата запроса «Number»
select * from table
where Dictionary='Dict1'

Name    Number  Dictionary  Difference value
---
Kate    300     Dict1       100  #(300-200)
Helena  200     Dict1       50 #(200-150)
Michael 150     Dict1       150 #(150-null)
  • Вопрос задан
  • 453 просмотра
Пригласить эксперта
Ответы на вопрос 1
Alexeytur
@Alexeytur
Только нужна будет сортировка по какому-нибудь полю
select 
table.*,
table.number - LEAD(table.number) OVER (ORDER BY table.name)
from table
where Dictionary='Dict1'
ORDER BY table.name
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы