Как сложить только дату между пользователем varialbes и добавить его - PullRequest
0 голосов
/ 02 мая 2019

Прежде всего, я плохо владею английским языком, спасибо за ваше понимание.

Я хочу суммировать значения строки, когда дата строки находится между датой начала текущей строки и текущей строкой (дата - 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
...