设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

1970-1-1 08:00| 发布者: 海狸先生『文章』| 查看: 5085| 评论: 0

看到很多朋友在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………(说明:如果某区间范围内没有符合数值,结果中将省略这个区间)

最新评论

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-3-29 17:26 , Processed in 0.059613 second(s), 16 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

返回顶部