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