SQL - повторяющаяся сумма значений на основе выбранных дат

В настоящее время мне нужна простая вещь:

sale_date    Gross    SUM_GROSS
2018-01-01   1        6
2018-01-02   2        6
2018-01-03   3        6

Я знаю, что этот вопрос уже упоминался ранее, теперь разница в том, что мне нужно рассчитать сумму на основе выбранных дат. (Я использую Big Query)

SUM(SALES.GrossValueBaseCurrency) OVER(PARTITION BY ???) AS SUM_GROSS

Если я буду использовать

SUM(SALES.GrossValueBaseCurrency) OVER(PARTITION BY SALE.SALE_DATE) AS SUM_GROSS

Это даст мне то, что я хотел бы ТОЛЬКО, если я выберу определенный ОДИН день.

Как я могу заставить это работать, так что если я выберу разные даты, SUM_GROSS будет повторять СУММУ ВСЕХ значений брутто за выбранный период времени?

ОБРАЗЕЦ ДАННЫХ и Ожидания:

Ожидается 60 в столбце SUM_GROSS

Row SALE_DATE   GROSS   SUM_GROSS
1   25/08/2018  10.00   60
2   04/10/2018  10.00   60
3   04/07/2018  10.00   60
4   01/03/2018  10.00   60
5   10/02/2018  10.00   60
6   10/01/2018  10.00   60

Если вы запросите эту таблицу, результат должен быть:

SELECT SUM(GROSS) AS GROSS, SUM_GROSS FROM TABLE
WHERE SALE_DATE BETWEEN 01/01/2018 AND 01/04/2018
GROUP BY SUM_GROSS 

РЕЗУЛЬТАТ:

GROSS   SUM_GROSS
30      30

2 ответа

Я думаю, что вы хотите разговор в partition пункт:

SUM(SALES.GrossValueBaseCurrency) OVER (PARTITION BY EXTRACT(YEAR from SALE.SALE_DATE), EXTRACT(MONTH from SALE.SALE_DATE)) AS SUM_GROSS

РЕДАКТИРОВАТЬ:

SELECT . . .,
       SUM(SALES.GrossValueBaseCurrency) OVER () AS SUM_GROSS 
FROM SALES s
WHERE SALE.SALE_DATE BETWEEN "2018-01-01 AND "2018-02-01"

Это то, что вы ищите?

SUM(CASE WHEN sales.sale_date = '2018-01-01'
         THEN SALES.GrossValueBaseCurrency
         ELSE 0
    END) OVER () AS sales_20180101
Другие вопросы по тегам