我的桌子看起来像这样:
ReadingDate,=avg(Cost)
11/04/2011,£10.00
28/05/2011,£326.00
02/06/2011,£12.00
28/06/2011,£53.00
10/09/2011,£956.00
11/10/2011,£63.00
01/01/2012,£36.00
11/04/2012,£150.00
12/05/2012,£100.00
我知道如何制作一天或一个月的平均值,但我如何制定“2012年5月1日至2013年11月11日之间”的限制并从中得到一个平均值?
答案 0 :(得分:1)
如果您想在加载脚本中执行此操作,可以创建一个临时表,您可以在其中执行所需范围内的平均值,然后将其存储在变量中。
我使用了以下示例的源数据:
SET DateFormat='DD/MM/YYYY';
MyData:
LOAD * INLINE [
ReadingDate, Cost
11/04/2011, 10.00
28/05/2011, 26.00
02/06/2011, 12.00
28/06/2011, 53.00
10/09/2011, 956.00
11/10/2011, 63.00
01/01/2012, 36.00
11/04/2012, 150.00
12/05/2012, 100.00
];
AverageData:
LOAD
avg(Cost) as AvgCost
RESIDENT MyData
WHERE (ReadingDate > '28/05/2011') AND (ReadingDate < '01/01/2012');
DROP TABLE AverageData;
LET AverageCost = peek('AvgCost',0,'AverageData');
此处,AverageCost
是您的变量,包含一个数字(在本例中为271
)。然后您可以在脚本中使用它,例如:
MyData2:
NOCONCATENATE
LOAD
ReadingDate,
Cost
$(AverageCost)
RESIDENT MyData;
然后产生以下结果:
11/04/2011, 10.00, 271
28/05/2011, 26.00, 271
02/06/2011, 12.00, 271
28/06/2011, 53.00, 271
10/09/2011, 956.00, 271
11/10/2011, 63.00, 271
01/01/2012, 36.00, 271
11/04/2012, 150.00, 271
12/05/2012, 100.00, 271