通过从上面我们看到的例子我们已经体会到了SQL的优越性,我们现在再来一个新的需求。假定我们现在要统计出班级的平均分。当然,我们同样可以采用循环来做:
SUM:=0;
For I:=0 to length(EnglishScore)-1 do
Begin
SUM+=EnglishScore[I];
End;
AVG:=SUM/length(EnglishScore); //AVG里存贮英语成绩没及格
同样的,我们也可以把这个功能封装起来:
Function AvgFunction(A,Field);
Begin
SUM:=0;
For I:=0 to length(A)-1 do
Begin
SUM:=SUM+A[I][Field];
End;
AVG:=SUM/length(A);
Return AVG;
End;
我们调用AvgFunction(EnglishScore,"英语成绩")就可以得到平均值了。
在SQL里,这类需求的实现统称为聚集函数。
我们采用select AvgOf(["英语成绩"]) from EnglishScore end;就可以完成上述功能。
当然我们需要统计85分以上的成绩的平均成绩的时候,使用select AvgOf(["英语成绩"]) from EnglishScore where ["英语成绩"]>85 end就可以了。
除了AvgOf求出平均数以外,还有例如Sumof可以求和,Countof可以求个数,Maxof、MinOf求最大最小值等等数十个聚集函数,可以解决常用的统计功能,用户还可以使用TS-SQL的AggOf来扩展聚集函数,关于聚集函数的扩展我们在稍后章节会另行讲述。