目前,我需要一件简单的事情:
sale_date Gross SUM_GROSS
2018-01-01 1 6
2018-01-02 2 6
2018-01-03 3 6
我知道前面已经提到的这个问题,现在的区别是,我需要根据选定的日期计算总和。 (我使用大查询)
SUM(SALES.GrossValueBaseCurrency) OVER(PARTITION BY ???) AS SUM_GROSS
如果我要使用
SUM(SALES.GrossValueBaseCurrency) OVER(PARTITION BY SALE.SALE_DATE) AS SUM_GROSS
只有选择特定的一天,它才会给我我想要的东西。
如何使它起作用,所以如果我选择其他日期,SUM_GROSS
将在选定的时间段内重复所有总值的总和?
示例数据和期望值:
预计 SUM_GROSS 列中的60
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
答案 0 :(得分:1)
我认为您想在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"
答案 1 :(得分:0)
这是您要寻找的吗?
SUM(CASE WHEN sales.sale_date = '2018-01-01'
THEN SALES.GrossValueBaseCurrency
ELSE 0
END) OVER () AS sales_20180101