在MS Access中对a、b、c列值相同的行计算d列的求和与平均值
嘿,这个需求在MS Access里其实挺容易实现的,我给你两种常用的方法,看你习惯哪种操作方式:
方法一:使用查询设计视图(可视化操作)
适合不太熟悉SQL,更喜欢点选操作的朋友:
- 打开你的Access数据库,找到目标数据表,切换到创建选项卡,点击查询设计
- 在弹出的「显示表」对话框里,选中你的数据表,点击添加,然后关闭对话框
- 把a、b、c、d四列依次拖到查询网格的字段行里
- 点击设计选项卡中的汇总按钮(就是那个Σ图标),这时候网格里会多一行「总计」
- 对a、b、c三列的「总计」行,都选择Group By——这一步就是告诉Access要按这三列的相同值分组
- 处理d列:先保留一行d列,把「总计」行改成Sum,还可以在字段列改成
SumOfD: Sum(d),方便一眼识别是求和结果;再额外添加一行d列,把「总计」行改成Avg,字段列改成AvgOfD: Avg(d) - 最后点击工具栏上的运行按钮(那个感叹号图标),就能看到结果啦——每一行都是a、b、c值完全相同的组,对应的d列求和和平均值都列出来了
方法二:直接编写SQL语句
如果熟悉SQL,直接写代码效率更高:
SELECT a, b, c, Sum(d) AS SumOfD, Avg(d) AS AvgOfD FROM 你的数据表名称 GROUP BY a, b, c;
- 把
你的数据表名称替换成你实际的表名就行 - 要是需要先过滤掉某些行再分组,还可以加
WHERE子句,比如想只统计a列值大于10的组,就把代码改成:
SELECT a, b, c, Sum(d) AS SumOfD, Avg(d) AS AvgOfD FROM 你的数据表名称 WHERE a > 10 GROUP BY a, b, c;
小提醒:如果a、b、c列里有Null值,Access会把所有Null值视为同一组。要是不想把Null值归为一组,可以在查询里加条件排除,比如WHERE a IS NOT NULL AND b IS NOT NULL AND c IS NOT NULL。
内容的提问来源于stack exchange,提问作者peterqng
相关产品推荐
相关产品推荐

