Cześć,
Zmóżdżam się nad takim oto zadaniem. Mam tabelkę (stany):
DATA | TOWAR | STAN1 | STAN2 | RÓŻNICA |
---|---|---|---|---|
2020-01-01 | towar1 | 10 | 9 | 1 |
2020-01-02 | towar1 | 11 | 9 | 2 |
2020-01-03 | towar1 | 15 | 14 | 1 |
2020-01-04 | towar1 | 12 | 12 | 0 |
2020-01-05 | towar1 | 10 | 10 | 0 |
2020-01-06 | towar1 | 10 | 8 | 2 |
2020-01-07 | towar1 | 5 | 5 | 0 |
2020-01-08 | towar1 | 4 | 4 | 0 |
2020-01-09 | towar1 | 3 | 3 | 0 |
2020-01-10 | towar1 | 1 | 1 | 0 |
Chodzi o zliczenie od jak dawna różnica między polami STAN1 i STAN2 utrzymuje się na niezmienionym poziomie. W powyższym przypadku wynik zapytania puszczonego na dzień 2020-01-07 powinno zwrócić 4 (od 4 dni różnica wynosi 0).
Próbowałem coś w tym stylu:
SELECT t.*,
row_number() over(PARTITION BY towar, roznica ORDER BY data ASC) AS dni
FROM stany t
ORDER BY 1;
ale wynik nie jest poprawny, gdyż nie zlicza on nieprzerwanych ciągów (dzień po dniu). Ktoś ma jakiś pomysł?