Я использую Postgresql & Sequelize.Я должен найти потребление из таблицы чтения.В настоящее время у меня есть запрос вычесть значение из предыдущей строки.Но проблема была в том, что если значение меньше, чем предыдущее, это означает, что я должен игнорировать строку и ждать, пока большее значение будет выполнено для расчета.
Текущий запрос
select "readingValue",
"readingValue" - coalesce(lag("readingValue") over (order by "id")) as consumption
from public."EnergyReadingTbl";
Пример записи и токового выхода
id readingValue consumption
65479 "35.8706703186035" "3.1444168090820"
65480 "39.0491638183594" "3.1784934997559"
65481 "42.1287002563477" "3.0795364379883"
65482 "2.38636064529419" "-39.74233961105351"
65483 "5.91744041442871" "3.53107976913452"
65484 "9.59204387664795" "3.67460346221924"
65485 "14.3925561904907" "4.80051231384275"
65486 "19.4217891693115" "5.0292329788208"
65487 "24.2393398284912" "4.8175506591797"
65488 "29.2515335083008" "5.0121936798096"
65489 "34.2519302368164" "5.0003967285156"
65490 "38.6513633728027" "4.3994331359863"
65491 "43.7513643778087" "5.1000010050060"
На этом изображении последнее максимальное значение было 42.1287002563477.Я должен подождать, пока не получу большее значение, чем 42.1287002563477, чтобы сделать расчет как следующее большее значение - 42.1287002563477.В этом случае 43.7513643778087 - 42.1287002563477.
Ожидаемый результат
id readingValue consumption
65479 "35.8706703186035" "3.1444168090820"
65480 "39.0491638183594" "3.1784934997559"
65481 "42.1287002563477" "3.0795364379883"
65482 "2.38636064529419" "0"
65483 "5.91744041442871" "0"
65484 "9.59204387664795" "0"
65485 "14.3925561904907" "0"
65486 "19.4217891693115" "0"
65487 "24.2393398284912" "0"
65488 "29.2515335083008" "0"
65489 "34.2519302368164" "0"
65490 "38.6513633728027" "0"
65491 "43.7513643778087" "1.1226641214710"
Есть ли шанс решить эту проблему в запросе?