我正在构建一个表来按月获得平均交易规模,并希望为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
答案 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
引用结果的第一列将起作用。