SQL - повторяющаяся сумма значений на основе выбранных дат - PullRequest
0 голосов
/ 19 февраля 2019

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

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 

RESULT:

GROSS   SUM_GROSS
30      30

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Я думаю, что вы хотите разговор в 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"
0 голосов
/ 19 февраля 2019

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

SUM(CASE WHEN sales.sale_date = '2018-01-01'
         THEN SALES.GrossValueBaseCurrency
         ELSE 0
    END) OVER () AS sales_20180101
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...