Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

求助各位大师有关自动数据分组合计的难题!

ynfsr  发表于:2011-09-09 17:14:30  
复制

如下表:一列任意数据怎样用代码或函数让数据自动分成5组或6组,要求分组后各组的数值合计都相等或近似相等?

 

Top
都市侠影 发表于:2011-09-09 17:18:20
呵呵,有这样的需求,大千世界无奇不有啊。

ynfsr 发表于:2011-09-09 18:05:25

简单说:有2300笔数据,自动分成20组(笔数不限),要求分为20组后,各组的数据小计约等于≈“全部数据合计÷20”,请教各位斑竹了!!!



蒋元根 发表于:2011-09-10 22:16:40
用查询的方法做了个例子,运行速度比较慢,供参考点击下载此附件

ynfsr 发表于:2011-09-11 03:03:53
十分感谢蒋元根老师!!!  高!高!实在是高! 只有想不到,没有做不到!!!

蒋元根 发表于:2011-09-11 05:55:52

供参考:

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.组;

 

点击下载此附件

ynfsr 发表于:2011-09-11 09:20:49

盘山路、索道车都能到达山顶景区,索道车爽点。再次感谢 蒋元根老师!



总记录:6篇  页次:1/1 9 1 :