QlikView中自定义时间范围内的平均成本

时间:2015-05-05 13:04:22

标签: qlikview

我的桌子看起来像这样:

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日之间”的限制并从中得到一个平均值?

1 个答案:

答案 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