Partition,让你的分组统计更加得心应手
看到很多朋友在access进行分组统计查询时,常常用嵌套多层IIF函数来得到分组区间标志,如设表A有Age这样一个字段,一般朋友会采用如下的查询语句:
Select
IIf(Age<30,"0:29",IIf(Age<40,"30:39",IIf(Age<50,"40:49",IIf(Age<60,"50:59",IIf(Age<70,"60:69","70: "))))) As Range,
Count (1) As Count
From 表A
Group By
IIf(Age<30,"0:29",IIf(Age<40,"30:39",IIf(Age<50,"40:49",IIf(Age<60,"50:59",IIf(Age<70,"60:69","70: ")))))
不但语句冗长,而且由于多层IIF函数嵌套,极易出错。另外如果分组区间进一步细化,更加多层嵌套的IIF函数会让人有“乱花渐欲迷人眼”的感觉,出错的概率进一步增大。
下面我为大家介绍VBA自带的一个函数Partition,它能使你的语句变得精简,大大减少出错概率。
首先说明一下其的语法:
Partition(number, start, stop, interval)
number 必需。整数,在所有范围中判断这个整数是否出现。
start必需。整数,数值范围的开始值,该值不能小于0。
stop必需。整数,数值范围的结束值,该值不能等于或小于start。
interval必需。整数,指示在Start与Stop之间计算的每个范围的大小。该值不能小于1。
我们把上面的查询语句修改一下,采用Partition函数:
Select Partition(Age,0,69,10) As Range, Count(Age) As Count From表A Group By Partition(Age,0,69,10)
效果是很显示的,与上面冗长的语句相比,简单是天差地别。
现在我结合这个实例再对Partition函数做进一步说明:
Partition(Age,0,69,10)
number 参数为Age字段,也就是对该字段的所有内容进行判断。
start 参数为0,即统计范围从0开始
stop 参数为69,即统计范围以69结束,这里需要解释一下。
虽然统计范围截止到69,但是如果表A中Age字段存在比69大的数值,即70及以上的,结果中将会为70及以上的数值划分出一个区间。(同理,如果start参数的值大于0,假设是10,那么当Age字段中存在比10小的数值,结果中也为会10以下(不含10)的数值划分出一个区间)
interval 参数为10,即每个区间范围是10,即0:9,10:19,20:29………(说明:如果某区间范围内没有符合数值,结果中将省略这个区间)
(责任编辑:admin)