6.10、提取extract、与聚合(sum、aggregate、avg)
原创
©著作权归作者所有:来自51CTO博客作者wx63914693c5388的原创作品,请联系作者获取转载授权,否则将追究法律责任
提取extract、与聚合(sum、aggregate、avg)
1 Extract(set, hierarchy[,hierarchy])
从set中抽取轴(层次结构)形成新的局部元组,
select
[Measures].[In Count] on 0,
//([Date].[Year Num].&[2016],[Date].[Month Num Of Year].members)
extract(
([Date].[YearNum].&[2016], [Date].[Month Num Of Year].members),
[Date].[Year Num]
)
on 1
from
[Park]
注意,抽取后的新元组与被抽取的元组没有限制关系,以上的抽取等于如下:
select
[Measures].[In Count] on 0,
[Date].[Year Num].&[2016] on 1
from
[Park]
2 Sum(set [, expression])
汇总集合中每个元组的度量值,如下
with
member[Date].[Year Num].[total] as
sum(
[Date].[Year Num].members
)
select
[Measures].[In Count] on 0,
(
[Date].[Year Num].allmembers
)on 1
from
[Park]
计算[Date].[Year Num]层次结构下,所有的成员的构成的元组的度量值的和。
3 Aggregate(set [, expression])
与sum类型,但是度量值中如果使用了distinct、max、min等时,sum会出错,因为sum只汇总每个元组的度量值,但是aggregate会根据具体的情况来汇总,所以正常情况下一直使用aggregate会更好,用法同sum一样
4 Avg(set [, expression])
计算set内所有元组的度量值的平均值,如下
with
member[Date].[Year Num].[avg] as
avg(
[Date].[Year Num].members
)
select
[Measures].[In Count] on 0,
(
[Date].[Year Num].allmembers
)on 1
from
[Park]
5 Existing与聚合函数
Exising可以引入上下文,例:
with
member [avg] as
avg(
[Date].[Year Num].[YearNum].members,
[Measures].[In Count]
)
member[avg-existing] as
avg(
existing
[Date].[Year Num].[YearNum].members,
[Measures].[In Count]
)
select
{
[Measures].[In Count],
[avg],
[avg-existing]
}on 0,
(
[Date].[YearNum].&[2014]:[Date].[Year Num].&[2017]
)on 1
from
[Park]
Existing关键字会引入上下文,也就是select中的条件与关系来进行技术,如果没有existing的话,计算成员是独立的完成度量值的计算的。