会员登录 - 用户注册 - 网站地图 Office中国(office-cn.net),专业Office论坛
当前位置:主页 > 技巧 > Access技巧 > 查询视图 > 正文

Partition,让你的分组统计更加得心应手

时间:2005-07-15 10:15 来源:本站原创 作者:海狸先生… 阅读:

看到很多朋友在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必需。整数,指示在StartStop之间计算的每个范围的大小。该值不能小于1

 

我们把上面的查询语句修改一下,采用Partition函数:

Select Partition(Age,0,69,10) As Range, Count(Age) As Count FromA Group By Partition(Age,0,69,10)

效果是很显示的,与上面冗长的语句相比,简单是天差地别。

 

现在我结合这个实例再对Partition函数做进一步说明:

Partition(Age,0,69,10)

number 参数为Age字段,也就是对该字段的所有内容进行判断。

start 参数为0,即统计范围从0开始

stop 参数为69,即统计范围以69结束,这里需要解释一下。

虽然统计范围截止到69,但是如果表AAge字段存在比69大的数值,即70及以上的,结果中将会为70及以上的数值划分出一个区间。(同理,如果start参数的值大于0,假设是10,那么当Age字段中存在比10小的数值,结果中也为会10以下(不含10)的数值划分出一个区间)

interval 参数为10,即每个区间范围是10,即0:9,10:19,20:29………(说明:如果某区间范围内没有符合数值,结果中将省略这个区间)

(责任编辑:admin)

顶一下
(0)
0%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价: