供参考:
Partition函数数据分组合计
网友ynfsr的问题:
简单说:有2300笔数据,自动分成20组(笔数不限),要求分为20组后,各组的数据小计约等于≈“全部数据合计÷20”,请教各位斑竹了
昨天做了用查询做了一个例子,但速度太慢了。
今天用Partition函数做了一个例子,速度快了。
思路:
1.用Dsum()函数更新累计查询:
UPDATE 记录 SET 记录.累计 = DSum("数量","记录","[ID]<= " & [ID] & "");
2.查询20组数量平均:
SELECT Sum(记录.数量) AS 数量之总计, Sum(记录.数量)/20 AS 20组数量平均
FROM 记录;
3.用Partition()查询组别:
SELECT 记录.ID, 记录.数量, 记录.累计, Partition([累计],0,712462,35624) AS 组
FROM 记录;
4.新建组别表:
5.追加组数据到组别表:
INSERT INTO 组别1 ( 组 )
SELECT 查询组别.组
FROM 查询组别
GROUP BY 查询组别.组;
6.查询组别ID:
SELECT 组别.ID, 组别.组, 查询组别.累计, 查询组别.数量, 查询组别.ID
FROM 查询组别 INNER JOIN 组别 ON 查询组别.组 = 组别.组;
7.查询20组分组合计:
SELECT 查询组别ID.组别.ID, 查询组别ID.组, Sum(查询组别ID.数量) AS 数量之总计
FROM 查询组别ID
GROUP BY 查询组别ID.组别.ID, 查询组别ID.组;
点击下载此附件