需要帮助计算Redshift中的MoM变化

时间:2016-05-13 22:14:17

标签: sql amazon-redshift

我正在构建一个表来按月获得平均交易规模,并希望为MoM更改添加一列。理想的决赛桌将包括:月份,该月的AVG交易规模,平均交易规模与上个月的变化。因为我只看2015年的数据,所以我应该有12行,但是我的每个日期都有一行。

select
to_char(cast(closedate as date),'Month') as month,
avg(amount) as average_amount,
ROUND((1-(AVG(amount) / nullif(lag(avg(amount),1) over (order by closedate),0)))*100,1) as MoM_change
from  sf.sf_opportunity
where to_char(cast(closedate as date),'YYYY') = '2015'
GROUP BY closedate
ORDER BY closedate ASC
; 

编辑:“group by 1”和“group by month”都不起作用。按月创建/分配的字段分组永远不会在红移中工作。两者都返回以下错误:

 ERROR: column "sf_opportunity.closedate" must appear in the GROUP BY clause or be used in an aggregate function

3 个答案:

答案 0 :(得分:0)

将您的group by子句更改为:

to_char(cast(closedate as date),'Month')

答案 1 :(得分:0)

你必须把月份放在小组中

Group by 1

此外,您不需要将asc放在顺序中,因为我们是困难

答案 2 :(得分:0)

您应该按照函数计算后的值进行分组,而不是之前的值。

group by month

将完成这项工作。同样:

group by 1

引用结果的第一列将起作用。