Как посчитать количество дней подряд?

Как посчитать количество дней подряд, когда у клиента баланс минусовой?
таблица, в которой хранится баланс клиента
date                         balance
2023-01-01                  200
2023-01-02                  -200
2023-01-03                  -60
2023-01-04                  50
2023-01-05                  -100
2023-01-01                  200
Как посчитать максимальное количество дней подряд, когда у клиента был минусовой баланс ? В примере запрос должен показать значение - 2.
  • Вопрос задан
  • 452 просмотра
Пригласить эксперта
Ответы на вопрос 3
tsklab
@tsklab
Здесь отвечаю на вопросы.
Ответ написан
Комментировать
iMedved2009
@iMedved2009
Не люблю людей
Чего то у меня какая то хрень получилась. Но вродь работает
Ответ написан
@Akina
Сетевой и системный админ, SQL-программист.
WITH cte AS (
    SELECT SUM(CASE WHEN balance < 0 THEN 0 ELSE 1 END) OVER (ORDER BY date) grp
    FROM test
    )
SELECT COUNT(*) - 1 max_cnt
FROM cte
GROUP BY grp
ORDER BY 1 DESC LIMIT 1;


fiddle (исходные украдены у Дмитрий).
Ответ написан
Ваш ответ на вопрос

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

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