Partition 函数
应用对象
返回一个 Variant (String) 指示数字在计算序列中的位置。
语法
分区 (编号、开始、停止、间隔)
Partition 函数语法具有以下参数:
| 参数 | 说明 |
|---|---|
| 数量 | 必需。 要根据范围计算的整数。 |
| 开始 | 必需。 整数,即整个数字范围的开头。 数字不能小于 0。 |
| 停止 | 必需。 整数,即整个数字范围的末尾。 该数字不能等于或小于 start。 |
| interval | 必需。 指定 在开始 和 停止) 之间 (整个数字范围内的分区大小的整数。 |
备注
Partition 函数标识数字下降的特定范围,并返回描述该范围的 Variant (String) 。 Partition 函数在查询中非常有用。 可以创建一个选择查询来显示不同范围内的订单数量,例如,从 1 到 1000、1001 到 2000 的订单值,等等。
下表显示了如何使用三组 start、 stop 和 interval 参数来确定范围。 “第一个范围”和“最后一个范围”列显示 Partition 返回的内容。 范围由 lowervalue:uppervalue 表示,其中,范围的低端 (低值) 与具有冒号 ( (的范围的 高端 (上限 值) 分隔 开来:) 。
| 开始 | 停止 | interval | Before First | 第一个范围 | 最后一个范围 | 在最后一个之后 |
|---|---|---|---|---|---|---|
| 0 | 99 | 5 | " :-1" | " 0: 4" | " 95: 99" | " 100: " |
| 20 | 199 | 10 | " : 19" | " 20: 29" | " 190: 199" | " 200: " |
| 100 | 1010 | 20 | " : 99" | " 100: 119" | " 1000: 1010" | " 1011: " |
在上面显示的表中,第三行显示 开始 和 停止 定义一组不能均匀除以 间隔的数字时的结果。 最后一个范围扩展到 停止 (11 个数字) 即使 间隔 为 20。
如有必要, Partition 将返回一个具有足够前导空格的区域,以便冒号的左侧和右侧的字符数与 停止号中的字符数相同,加一个字符。 这可确保如果将 Partition 与其他数字一起使用,则将在任何后续排序操作期间正确处理生成的文本。
如果 interval 为 1,则范围为 number:number,而不考虑 start 和 stop 参数。 例如,如果 interval 为 1,number 为 100,stop 为 1000,则 Partition 返回“100:100”。
如果任一部分为 Null, 则 Partition 返回 Null。
查询示例
| Expression | 结果 |
|---|---|
| SELECT Partition (unitprice,40,240,20) AS PriceRange, count (productsales.unitprice) AS Count FROM productSales GROUP BY Partition (unitprice,40,240,20) ; | 为字段“unitprice”中的值创建一组范围,范围从“start” (40) 到“stop” (240) ,“interval” (20) 大小相等,并计算相应区域中的“unitprice”计数。 显示“PriceRange”列中的范围和“Count”列中的计数。 |
VBA 示例
此示例假定你有一个包含 Freight 字段的 Orders 表。 它创建一个选择过程,用于计算货运成本属于多个范围的订单数。 首先使用 Partition 函数建立这些范围,然后 SQL Count 函数计算每个区域中的订单数。 在此示例中,Partition 函数的参数为 start = 0,stop = 500,interval = 50。 因此,第一个范围为 0:49,依此至 500。
SELECT DISTINCTROW Partition([freight],0, 500, 50) AS Range,
Count(Orders.Freight) AS Count
FROM Orders
GROUP BY Partition([freight],0,500,50);