Access汇总查询(二)

2020-05-26 22:37:45 浏览数 (1)

示 例

1、示例一

问题:统计每个出版社出版的最高售价的书的价格?

分析:需要的查询的数据分别来自出版商表和图书表。由于需要按不同的出版商来分组统计,所以出版商字段需要在使用“Group By”来分组。而求单价最高的书就需要统计[单价]字段“最大值”。

创建查询设计,双击选中出版商表的名称字段,和图书表的单价字段。点击右上角汇总,在下侧新增的总计栏,在“名称”字段下选择Group By,“单价”字段选择“最大值”。

然后点击左上角的“运行”图标,查看运行后的结果。(如果想改变查询结果中列的名称。可以在查询设计中,在字段之前加上要改的名称和英文冒号。)如下图所示:

2、示例二

问题:统计每个出版社出版的书的平均价格?结果保留到个位。

分析:需要的查询的数据分别来自出版商表和图书表。由于需要按不同的出版商来分组统计,所以出版商字段需要在使用“Group By”来分组。

而求单价平均值可以想到使用统计[单价]字段“平均值”,但这里需要对结果使用Round函数。解决方法略有不同,(有疑问在后面会有补充)演示如下:

首先是正常的创建查询,添加出版商表和图书表,选择名称和单价字段,添加汇总行。

然后将单价字段改成,平均单价:round(avg([单价]),0),然后将汇总行改成expression,它是表达式的意思。运行查看最后的结果。

可以看到结果,实际上就是汇总行使用expression,即按字段行中的表达式平均单价:round(avg([单价]),0)来计算结果。

示例二补充:如果汇总行,选择平均值。在字段上只使用round([单价],0)可行么?来试验对比下:

可以发现结果按组求了平均值,但是并没有按要求保留到个位数。是因为汇总的字段是先使用函数round([单价],0)。然后再进行平均的。(平均之后的结果不会再用round函数)。

所以两种方式结果并不相同,选择第一种方式可以使结果保留需要的位数。

0 人点赞