Прежде всего, я плохо владею английским языком, спасибо за ваше понимание.
Я хочу суммировать значения строки, когда дата строки находится между датой начала текущей строки и текущей строкой (дата - 1), но моязапрос работает не между датой начала текущей строки и текущей строкой (дата - 1), а строкой даты начала и даты строки
start_date - определяемая пользователем переменная.
, когда дата разницы и дата начала больше или равны 7дата начала - дата - 7 в противном случае 2018-07-02
мои данные
date start_date value
2018-07-04 2018-07-02 2
2018-07-06 2018-07-02 2
2018-07-07 2018-07-02 4
2018-07-09 2018-07-02 1
2018-07-10 2018-07-03 1
2018-07-12 2018-07-05 3
2018-07-15 2018-07-08 1
результат, который я хочу
0
2
4
8
9
8
5
, но на самом деле результат
0
2
4
8
9
10
13
Я попытался указать конкретную дату, например "2018-07-08" вместо @date, тогда она хорошо работает в последней строке (2018-07-15 2018-07-08 1)
, так что я думаюмой запрос сравнивает дату и начальную дату по строкам.но я хочу не по строке, а по текущей строке start_date
SET @date := "2018-07-02"
@date := CASE
WHEN DATEDIFF(date, @date) > 7
THEN DATE_ADD(@DATE, interval 1 day)
ELSE @date
END AS start_date
sum( CASE
WHEN date between @date and DATE_ADD(@date, interval 6 day)
THEN impressions
ELSE 0
END
) OVER (PARTITION BY
a, b, c
ORDER BY
a, b, c, date
rows BETWEEN 7 preceding
) AS sum