关于 Partition 函数在分组查询中的应用
关于 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函数会让人有“乱花渐欲迷人眼”的感觉,出错的概率进一步增大。
现在我们用 Partition 函数重写一下:
Select Partition(Age,0,69,10) As Range, Count(Age) As Count From表A Group By Partition(Age,0,69,10) |
代码相对简单很多,不过上述函数只适用于纯 access 环境
以下是 Partition 的帮助
Partition 函数
返回一个 Variant (String),指定一个范围,在一系列计算的范围中指定的数字出现在这个范围内。 语法 Partition(number, start, stop, interval) Partition 函数的语法含有下面这些命名参数:
说明 Partition 函数会标识 number 值出现的特定范围,并返回一个 Variant (String) 来描述这个范围。Partition 函数在查询中是最有用的。可以创建一个选择查询显示有多少定单落在几个变化的范围内,例如,定单数从 1 到 1000、1001 到 2000,以此类推。 下面的表格使用三组 start,stop 以及 interval 部分,来显示怎样决定这个范围。第一个范围和最后一个范围两列显示 Partition 的返回值,此范围的低端 (lowervalue) 和高端 (uppervalue) 是以冒号分开的。
从上面的表格中得知,在第三行中,由 start 和 stop 所定义的数值范围不能以 interval 来均分。所以,即使 interval 是 20,最后一个范围也只能扩展到stop(11 个数)。 如果需要的话,Partition 会在返回的范围中加上足够的空白,以便让返回值在冒号的左右两侧有相同的字符数,其值就是 stop 中的字符数再加一。如此可确保当要使用 Partition 与其它的数值作运算时,所得的字符串,可以在之后的排序操作中得到正确的结果。 如果 interval 是 1,则范围便是 number:number,而不管 start 和 stop 参数如何。比如说,如果 interval 是 1,number 是 100,而 stop 是 1000,则 Partition 会返回 " 100: 100"。 如果任何部分是 Null,则 Partition 会返回一个 Null。 |
(责任编辑:admin)
- ·关于 Partition 函数在分组查询中的应
- ·Access算术运算符的含义和说明表
- ·mid函数的另类用法
- ·access制作程序运行进度框
- ·Function与Sub的异同(函数调用)
- ·Access判断某个数值是否为某个数据类型
- ·select case后面语句块的值的四种格式
- ·vba条件语句的两种表示方法
- ·Access几种数据类型初始化的值
- ·Access vba null与""空字符串的区别
- ·access vba 数据类型表
- ·Access变量的命名规则
- ·Access中EXIT Sub与End Sub的区别
- ·Access vba中参数前关键字ByRef和ByVal
- ·Access列表框快速全选的技巧【最快】
- ·vba函数的数据类型强制转换