Основываясь на предыдущих записях, поля стоп-суммы
У меня есть такая таблица:
|id | date | point |
+---+------------+-------+
| 6 | 2022/01/06 | 9 |
| 5 | 2022/01/05 | 7 |
| 4 | 2022/01/04 | 1 |
| 3 | 2022/01/03 | 4 |
| 2 | 2022/01/02 | 6 |
| 1 | 2022/01/01 | 1 |
Моя цель - получить
point
s от даты сейчас до даты, когда точка больше, чем равна 1, и остановите сумму полей до этой даты.
В приведенном выше примере (сортировка по дате) ответом является текущая дата баллов (
2022/01/06
) к дате
2022/01/04
и равно
9 + 7 + 1 = 17
. Поскольку стоимость пункта на дату
2022/01/03
равно 4, поэтому не рассчитывается в
sum
.
Я читал о CTE и Window Functoin , однако мне не удалось их правильно реализовать.
1 ответ
- Найдите первую строку до (и включая) желаемой даты, значение точки которой равно 1.
- Суммируйте это и все, что новее, до (включительно) желаемой даты.
select sum(point)
from points
where date between (
select "date"
from points
where point = 1 and date <= '2022/01/06'
order by "date" desc
limit 1
) and '2022/01/06';