嘿,伙计们,我正试着在Tableau的一个计算字段中计算上个月的运行平均值。然而,我很难定义上个月的范围,并将其添加到计算中。我想过用
IF [date] >= DATEADD('month', -1, TODAY()) THEN
RUNNING_AVG(SUM( IF [Entry Type] = 'Sale'
THEN [Invoiced Quantity]
我在SQL Server 2012中有一个表,其中包含以下两列:
Date, Amount
我想要获取一个月的摘要,即2013年5月的摘要。我还想得到上个月,去年同月的总结,以及过去12个月的平均值。我知道我可以使用GROUP BY获取每个月的数据,然后获得我需要的所有数据。但是,这个表有这么多行,我想让它更快。
一种可能性是使用Partition By
SELECT DISTINCT YEAR(Date), MONTH(Date), SUM(Amount) OVER (Partiotion By YEAR(Date), MONTH(Date))
FROM myTable
但是,我如何使用它来
如何向数据添加一列price.wk.average,使price.wk.average等于上周的平均价格,并向数据添加一列price.mo.average,使其等于上个月的平均价格?整个星期的price.wk.average都是一样的。
Dates Price Demand Price.wk.average Price.mo.average
2010-1-1 x x
2010-1-2 x x
......
2015-1-1 x x
希望对大量数据执行平均计算。我们经常从设备上捕获数据,我们想要获得前一天的平均值、上周的平均值、上个月的平均值和去年的平均值。
不幸的是,取去年数据的平均值需要几分钟才能完成。我只有一些基本的SQL知识,我希望这里有一些好的信息来加快速度。
该表有一个时间戳、一个标识数据所属设备的ID和一个浮点数据值。
我一直在使用的查询遵循这个通用示例:
select avg(value)
from table
where id in(1,2,3,4) timestamp > last_year
编辑:我还应该澄清的是,他们要求在滚动的基础上计算这些平均值。如“年初至今”的平均值。我确实意识到