本文介绍如何使用 Access 称为聚合函数的函数类型来对查询结果集中的数据求和。 本文还简要介绍了如何使用其他聚合函数(如 COUNT 和 AVG) 对结果集中的值进行计数或求平均值。 此外,本文还介绍如何使用“总行”,这是 Access 中的一项功能,可用于对数据求和,而无需更改查询的设计。
您要做什么?
了解对数据求和的方法
可以使用称为聚合函数的函数类型对查询中的一列数字求和。 聚合函数对数据列执行计算并返回单个值。 Access 提供了各种聚合函数,包括 Sum、 Count、 Avg (,用于计算平均值) 、 最小值 和 最大值。 通过将 Sum 函数添加到查询来对数据求和,使用 Count 函数对数据进行 计数 ,等等。
此外, Access 提供了多种向查询添加 Sum 和其他聚合函数的方法。 你可以:
-
在“数据表”视图中打开查询,并添加“总计”行。 总行( Access 中的一项功能)允许在查询结果集的一列或多列中使用聚合函数,而无需更改查询的设计。
-
创建总计查询。 总计查询可跨记录组计算小计;总计行计算一列或多列的总计, (字段) 数据。 例如,如果要按城市或季度对所有销售额进行分类,请使用总计查询按所需类别对记录进行分组,然后对销售数字求和。
-
创建交叉表查询。 交叉表查询是一种特殊类型的查询,可在类似于 Excel 工作表的网格中显示其结果。 交叉表查询汇总你的值,然后按两组事实对其进行分组:一组 (行标题) ,另一组位于) 顶部 (列标题。 例如,可以使用交叉表查询来显示过去三年每个城市的销售额总计,如下表所示:
城市 |
2003 |
2004 |
2005 |
---|---|---|---|
巴黎 |
254,556 |
372,455 |
467,892 |
悉尼 |
478,021 |
372,987 |
276,399 |
Jakarta(雅加达) |
572,997 |
684,374 |
792,571 |
... |
... |
... |
... |
注意: 本文档中的操作方法部分强调使用 Sum 函数,但请记住,可以在 Total 行和查询中使用其他聚合函数。 有关使用其他聚合函数的详细信息,请参阅本文后面的 聚合函数参考 部分。
有关使用其他聚合函数的方法的详细信息,请参阅 在数据表中显示列总计一文。
以下各节中的步骤说明如何添加“总计”行、使用汇总查询对各组的数据进行求和,以及如何使用跨组和时间间隔对数据进行分类汇总的交叉表查询。 继续操作时,请记住,许多聚合函数仅适用于设置为特定数据类型的字段中的数据。 例如, SUM 函数仅适用于设置为 Number、Decimal 或 Currency 数据类型的字段。 有关每个函数所需的数据类型的详细信息,请参阅本文后面的 聚合函数参考部分。
有关数据类型的一般信息,请参阅 修改或更改字段的数据类型集一文。
准备一些示例数据
本文中的操作方法部分提供了示例数据表。 操作方法步骤使用示例表来帮助你了解聚合函数的工作原理。 如果需要,可以选择将示例表添加到新的或现有的数据库中。
Access 提供了多种将示例表添加到数据库的方法。 您可以手动输入数据,可以将每个表格复制到 Excel 等电子表格程序,然后将工作表导入 Access,也可以将数据粘贴到文本编辑器(如记事本)中,并从生成的文本文件导入数据。
本部分中的步骤说明如何在空白数据表中手动输入数据,以及如何将示例表复制到电子表格程序,然后将这些表导入 Access。 有关创建和导入文本数据的详细信息,请参阅 在文本文件中导入或链接到数据一文。
本文中的操作方法步骤使用下表。 使用这些表创建示例数据:
“类别”表:
类别 |
---|
Dolls |
游戏和拼图 |
艺术和框架 |
视频游戏 |
DVD 和电影 |
模型和爱好 |
Sports |
“产品”表:
产品名称 |
价格 |
类别 |
---|---|---|
程序员操作图 |
$12.95 |
Dolls |
使用 C# (玩全家棋盘游戏) |
$15.85 |
游戏和拼图 |
关系数据库关系图 |
$22.50 |
艺术和框架 |
神奇的电脑芯片 (500 件) |
$32.65 |
游戏和拼图 |
访问! 游戏! |
$22.95 |
游戏和拼图 |
计算机极客和神话生物 |
$78.50 |
视频游戏 |
计算机极客练习! The DVD! |
$14.88 |
DVD 和电影 |
Ultimate飞披萨 |
$36.75 |
Sports |
外部 5.25 英寸软盘驱动器 (1/4 缩放) |
$65.00 |
模型和爱好 |
官僚不采取行动的数字 |
$78.88 |
Dolls |
黑暗 |
$53.33 |
视频游戏 |
生成自己的键盘 |
$77.95 |
模型和爱好 |
Orders 表:
订单日期 |
发货日期 |
Ship City |
运费 |
---|---|---|---|
11/14/2005 |
11/15/2005 |
Jakarta(雅加达) |
$55.00 |
11/14/2005 |
11/15/2005 |
悉尼 |
$76.00 |
11/16/2005 |
11/17/2005 |
悉尼 |
$87.00 |
11/17/2005 |
11/18/2005 |
Jakarta(雅加达) |
$43.00 |
11/17/2005 |
11/18/2005 |
巴黎 |
$105.00 |
11/17/2005 |
11/18/2005 |
斯图加特 |
$112.00 |
11/18/2005 |
11/19/2005 |
维也纳 |
$215.00 |
11/19/2005 |
11/20/2005 |
迈阿密 |
$525.00 |
11/20/2005 |
11/21/2005 |
维也纳 |
$198.00 |
11/20/2005 |
11/21/2005 |
巴黎 |
$187.00 |
11/21/2005 |
11/22/2005 |
悉尼 |
$81.00 |
11/23/2005 |
11/24/2005 |
Jakarta(雅加达) |
$92.00 |
“ 订单详细信息” 表:
订单 ID |
产品名称 |
产品 ID |
单价 |
数量 |
Discount |
---|---|---|---|---|---|
1 |
生成自己的键盘 |
1.2 |
$77.95 |
9 |
5% |
1 |
官僚不采取行动的数字 |
2 |
$78.88 |
4 |
7.5% |
2 |
计算机极客练习! The DVD! |
7 |
$14.88 |
6 |
4% |
2 |
神奇的计算机芯片 |
4 |
$32.65 |
8 |
0 |
2 |
计算机极客和神话生物 |
6 |
$78.50 |
4 |
0 |
3 |
访问! 游戏! |
5 |
$22.95 |
5 |
15% |
4 |
程序员操作图 |
1 |
$12.95 |
2 |
6% |
4 |
Ultimate飞披萨 |
8 |
$36.75 |
8 |
4% |
5 |
外部 5.25 英寸软盘驱动器 (1/4 缩放) |
9 |
$65.00 |
4 |
10% |
6 |
关系数据库关系图 |
3 |
$22.50 |
1.2 |
6.5% |
7 |
黑暗 |
11 |
$53.33 |
6 |
8% |
7 |
关系数据库关系图 |
3 |
$22.50 |
4 |
9% |
注意: 请记住,在典型数据库中,订单详细信息表将仅包含“产品 ID”字段,而不包含“产品名称”字段。 示例表使用“产品名称”字段使数据更易于阅读。
手动输入示例数据
-
在“创建”选项卡上的“表”组中,单击“表”。
Access 将新的空白表添加到数据库。
注意: 如果打开新的空白数据库,无需执行此步骤,但每次需将表添加到数据库时均需此步骤。
-
双击标题行中的第一个单元格,并在示例表中输入字段的名称。
默认情况下,Access 用文本 “添加新字段”表示标题行中的空白字段,如下所示:
-
使用箭头键移动到下一个空白标题单元格 ,然后键入第二个字段名称 (也可以按 Tab 或双击新单元格) 。 重复此步骤,直到输入所有字段名称。
-
在示例表中输入数据。
输入数据时,Access 会推断每个字段的数据类型。 如果不熟悉关系数据库,则应为表中的每个字段设置特定的数据类型,例如“数字”、“文本”或“日期/时间”。 设置数据类型有助于确保准确的数据输入,还有助于防止错误,例如在计算中使用电话号码。 对于这些示例表,应让 Access 推断数据类型。
-
输入完数据后,单击“ 保存”。
键盘快捷方式 按 Ctrl+S。
将显示“另存为”对话框。
-
在“ 表名称 ”框中,输入示例表的名称,然后单击“ 确定”。
使用每个示例表的名称,因为操作方法部分中的查询使用这些名称。
-
重复这些步骤,直到创建本部分开头列出的每个示例表。
如果不想手动输入数据,请按照后续步骤将数据复制到电子表格文件,然后将数据从电子表格文件导入 Access。
创建示例工作表
-
启动电子表格程序并创建新的空白文件。 如果使用 Excel,则默认情况下会创建一个新的空白工作簿。
-
复制上面提供的第一个示例表,并将其粘贴到第一个工作表中,从第一个单元格开始。
-
使用电子表格程序提供的技术重命名工作表。 为工作表指定与示例表相同的名称。 例如,如果示例表名为 Categories,请为工作表指定相同的名称。
-
重复步骤 2 和 3,将每个示例表复制到空白工作表并重命名工作表。
注意: 可能需要将工作表添加到电子表格文件。 有关执行该任务的信息,请参阅电子表格程序的帮助。
-
将工作簿保存到计算机或网络上的方便位置,然后执行后续步骤。
基于工作表创建数据库表
-
在“ 外部数据 ”选项卡上的“ 导入 & 链接 ”组中,单击“ 新建数据源 > 从文件 > Excel”。
此时会显示 “获取外部数据 - Excel 电子表格 ”对话框。
-
单击“ 浏览”,打开在前面步骤中创建的电子表格文件,然后单击“ 确定”。
将启动导入电子表格向导。
-
默认情况下,如果按照上一节) 中的步骤操作,并且工作表中的数据显示在向导页面的下半部分,向导将在“ 客户 ”工作表 (选择工作簿中的第一个工作表。 单击“下一步”。
-
在向导的下一页上,单击“ 第一行包含列标题”,然后单击“ 下一步”。
-
(可选)在下一页上,使用“ 字段选项” 下的文本框和列表更改字段名称和数据类型,或者省略导入操作中的字段。 否则,请单击“下一步”。
-
将 “允许访问添加主键 ”选项保留为选中状态,然后单击“ 下一步”。
-
默认情况下,Access 向新表应用工作表的名称。 接受该名称或输入其他名称,然后单击“ 完成”。
-
重复步骤 1 到 7,直到从工作簿中的每个工作表创建表格。
重命名主键字段
注意: 导入工作表时,Access 会自动向每个表添加主键列,默认情况下,Access 将该列命名为“ID”,并将其设置为“自动编号”数据类型。 本文中的步骤说明如何重命名每个主键字段。 这样做有助于清楚地标识查询中的所有字段。
-
在导航窗格中,右键单击在前面的步骤中创建的每个表,然后单击“ 设计视图”。
-
对于每个表,找到主键字段。 默认情况下,Access 为每个字段 ID 命名。
-
在每个主键字段的“ 字段名称” 列中,添加表的名称。
例如,将“类别”表的 ID 字段重命名为“类别 ID”,将“订单”表的字段重命名为“订单 ID”。 对于“订单详细信息”表,请将字段重命名为“详细信息 ID”。 对于“产品”表,请将字段重命名为“产品 ID”。
-
保存所做的更改。
每当示例表出现在本文中时,它们都会包含主键字段,并且将重命名字段,如前面的步骤所述。
使用 Total 行对数据求和
可以通过在“数据表”视图中打开查询,添加行,然后选择要使用的聚合函数(例如 Sum、 Min、 Max 或 Avg),向查询添加 Total 行。 本部分中的步骤说明如何创建基本选择查询并添加“总计”行。 无需使用上一部分中所述的示例表。
创建基本选择查询
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
双击要在查询中使用的一个或多个表。
所选表在查询设计器的上半部分显示为窗口。
-
双击要在查询中使用的表字段。
可以包含包含描述性数据的字段(如名称和说明),但必须包含包含数字或货币数据的字段。
每个字段都显示在设计网格的单元格中。
-
单击“ 运行 ”以运行查询。
查询结果集将显示在“数据表”视图中。
-
(可选)切换到“设计”视图并调整查询。 为此,请右键单击查询的文档选项卡,然后单击“ 设计视图”。 然后,可以根据需要添加或删除表字段来调整查询。 若要删除字段,请选择设计网格中的列,然后按 DELETE。
-
保存查询。
添加总计行
-
确保查询在数据表视图中打开。 为此,请右键单击查询的文档选项卡,然后单击“ 数据表视图”。
-或者-
在导航窗格中,双击查询。 这会运行查询并将结果加载到数据表中。
-
在“开始”选项卡上的“记录”组中,单击“合计”。
数据表中将显示一个新的 “总计 ”行。
-
在 “总计 ”行中,单击要求和的字段中的单元格,然后从列表中选择“ 总 和”。
隐藏总计行
-
在“开始”选项卡上的“记录”组中,单击“合计”。
有关使用 Total 行的详细信息,请参阅在 数据表中显示列总计一文。
使用查询计算总计
总计是列中所有值的总和。 可以计算多种类型的总计,包括:
-
对单个列中的值求和的简单总计。 例如,可以计算总运输成本。
-
计算的总计,对多个列中的值求和。 例如,可以通过将多个项的成本乘以订购的项数,然后将结果值总计来计算总销售额。
-
排除某些记录的总计。 例如,只能计算上周五的总销售额。
以下部分中的步骤说明如何创建每种类型的总计。 这些步骤使用“订单”和“订单详细信息”表。
Orders 表
订单 ID |
订单日期 |
发货日期 |
Ship City |
运费 |
---|---|---|---|---|
1 |
11/14/2005 |
11/15/2005 |
Jakarta(雅加达) |
$55.00 |
2 |
11/14/2005 |
11/15/2005 |
悉尼 |
$76.00 |
3 |
11/16/2005 |
11/17/2005 |
悉尼 |
$87.00 |
4 |
11/17/2005 |
11/18/2005 |
Jakarta(雅加达) |
$43.00 |
5 |
11/17/2005 |
11/18/2005 |
巴黎 |
$105.00 |
6 |
11/17/2005 |
11/18/2005 |
斯图加特 |
$112.00 |
7 |
11/18/2005 |
11/19/2005 |
维也纳 |
$215.00 |
8 |
11/19/2005 |
11/20/2005 |
迈阿密 |
$525.00 |
9 |
11/20/2005 |
11/21/2005 |
维也纳 |
$198.00 |
10 |
11/20/2005 |
11/21/2005 |
巴黎 |
$187.00 |
11 |
11/21/2005 |
11/22/2005 |
悉尼 |
$81.00 |
1.2 |
11/23/2005 |
11/24/2005 |
Jakarta(雅加达) |
$92.00 |
“订单详细信息”表
详细信息 ID |
订单 ID |
产品名称 |
产品 ID |
单价 |
数量 |
Discount |
---|---|---|---|---|---|---|
1 |
1 |
生成自己的键盘 |
1.2 |
$77.95 |
9 |
0.05 |
2 |
1 |
官僚不采取行动的数字 |
2 |
$78.88 |
4 |
0.075 |
3 |
2 |
计算机极客练习! The DVD! |
7 |
$14.88 |
6 |
0.04 |
4 |
2 |
神奇的计算机芯片 |
4 |
$32.65 |
8 |
0.00 |
5 |
2 |
计算机极客和神话生物 |
6 |
$78.50 |
4 |
0.00 |
6 |
3 |
访问! 游戏! |
5 |
$22.95 |
5 |
0.15 |
7 |
4 |
程序员操作图 |
1 |
$12.95 |
2 |
0.06 |
8 |
4 |
Ultimate飞披萨 |
8 |
$36.75 |
8 |
0.04 |
9 |
5 |
外部 5.25 英寸软盘驱动器 (1/4 缩放) |
9 |
$65.00 |
4 |
0.10 |
10 |
6 |
关系数据库关系图 |
3 |
$22.50 |
1.2 |
0.065 |
11 |
7 |
黑暗 |
11 |
$53.33 |
6 |
0.08 |
1.2 |
7 |
关系数据库关系图 |
3 |
$22.50 |
4 |
0.09 |
计算简单的总计
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
双击要在查询中使用的表。
如果使用示例数据,请双击“订单”表。
该表显示在查询设计器上部的窗口中。
-
双击要求和的字段。 确保字段设置为“数字”或“货币”数据类型。 如果尝试对非数值字段(如 Text 字段)中的值求和,Access 会在您尝试运行查询时显示 条件表达式中的数据类型不匹配 错误消息。
如果使用示例数据,请双击“运费”列。
如果要计算这些字段的总计,可以将其他数值字段添加到网格。 总计查询可以计算多个列的总计。
-
在“ 查询设计 ”选项卡上的“ 显示/隐藏 ”组中,单击“ 总计”。
“总计”行显示在设计网格中,“分组依据”显示在“运费”列的单元格中。
-
将 “总计 ”行单元格中的值更改为 “总和”。
-
单击“ 运行 运行查询并在数据表视图中显示结果。
提示: 请注意,Access 会将“SumOf”追加到求和的字段名称的开头。 若要将列标题更改为更有意义的内容(如 “总发货”),请切换回“设计”视图,然后单击设计网格中“运费”列的 “字段 ”行。 将光标放在 “运费” 旁边,键入单词 “总运费”,后跟冒号,如下所示: 总发货:运费。
-
(可选)保存并关闭查询。
计算排除某些记录的总计
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
双击“订单”表和“订单详细信息”表。
-
将 Orders 表中的“订单日期”字段添加到查询设计网格中的第一列。
-
在第一列的 “条件” 行中,键入 日期 () -1。 该表达式从计算的总计中排除当天的记录。
-
接下来,创建计算每个交易的销售额的列。 在网格中第二列的 “字段” 行中键入以下表达式:
总销售额: (1-[订单详细信息]。[折扣]/100) * ([订单详细信息]。[单价]*[订单详细信息]。[Quantity])
请确保表达式引用设置为“数字”或“货币”数据类型的字段。 如果表达式引用设置为其他数据类型的字段,则当您尝试运行查询时,Access 会在条件表达式中显示“数据类型不匹配 ”消息。
-
在“ 查询设计 ”选项卡上的“ 显示/隐藏 ”组中,单击“ 总计”。
“总计”行显示在设计网格中,“分组依据”显示在第一列和第二列中。
-
第二列中,将 “总计 ”行单元格中的值更改为 “总和”。 Sum 函数添加单个销售数字。
-
单击“ 运行 运行查询并在数据表视图中显示结果。
-
将查询另存为 “每日销售额”。
注意: 下次在“设计”视图中打开查询时,你可能会注意到“总销售额值”列的 “字段” 和“ 总 行数”中指定的值略有变化。 表达式显示在 Sum 函数内, Total 行显示 Expression 而不是 Sum。
例如,如果使用示例数据并创建查询 (,如前面的步骤) 所示,则会看到:
总销售额:总和 ( (1-[订单详细信息]。Discount/100) * ([订单详细信息]。Unitprice*[订单详细信息]。数量) )
使用总计查询计算组总计
本部分中的步骤说明如何创建计算数据组小计的总和查询。 继续操作时,请记住,默认情况下,总计查询只能包含包含组数据的字段(如“类别”字段)和包含要求和的数据的字段(如“sales”字段)。 总计查询不能包含描述类别中项的其他字段。 如果想要查看该描述性数据,可以创建第二个选择查询,该查询将汇总查询中的字段与其他数据字段组合在一起。
本部分中的步骤说明如何创建总计并选择确定每个产品的总销售额所需的查询。 这些步骤假定使用以下示例表:
“产品”表
产品 ID |
产品名称 |
价格 |
类别 |
---|---|---|---|
1 |
程序员操作图 |
$12.95 |
Dolls |
2 |
使用 C# (玩全家棋盘游戏) |
$15.85 |
游戏和拼图 |
3 |
关系数据库关系图 |
$22.50 |
艺术和框架 |
4 |
神奇的电脑芯片 (500 件) |
$32.65 |
艺术和框架 |
5 |
访问! 游戏! |
$22.95 |
游戏和拼图 |
6 |
计算机极客和神话生物 |
$78.50 |
视频游戏 |
7 |
计算机极客练习! The DVD! |
$14.88 |
DVD 和电影 |
8 |
Ultimate飞披萨 |
$36.75 |
Sports |
9 |
外部 5.25 英寸软盘驱动器 (1/4 缩放) |
$65.00 |
模型和爱好 |
10 |
官僚不采取行动的数字 |
$78.88 |
Dolls |
11 |
黑暗 |
$53.33 |
视频游戏 |
1.2 |
生成自己的键盘 |
$77.95 |
模型和爱好 |
“订单详细信息”表
详细信息 ID |
订单 ID |
产品名称 |
产品 ID |
单价 |
数量 |
Discount |
---|---|---|---|---|---|---|
1 |
1 |
生成自己的键盘 |
1.2 |
$77.95 |
9 |
5% |
2 |
1 |
官僚不采取行动的数字 |
2 |
$78.88 |
4 |
7.5% |
3 |
2 |
计算机极客练习! The DVD! |
7 |
$14.88 |
6 |
4% |
4 |
2 |
神奇的计算机芯片 |
4 |
$32.65 |
8 |
0 |
5 |
2 |
计算机极客和神话生物 |
6 |
$78.50 |
4 |
0 |
6 |
3 |
访问! 游戏! |
5 |
$22.95 |
5 |
15% |
7 |
4 |
程序员操作图 |
1 |
$12.95 |
2 |
6% |
8 |
4 |
Ultimate飞披萨 |
8 |
$36.75 |
8 |
4% |
9 |
5 |
外部 5.25 英寸软盘驱动器 (1/4 缩放) |
9 |
$65.00 |
4 |
10% |
10 |
6 |
关系数据库关系图 |
3 |
$22.50 |
1.2 |
6.5% |
11 |
7 |
黑暗 |
11 |
$53.33 |
6 |
8% |
1.2 |
7 |
关系数据库关系图 |
3 |
$22.50 |
4 |
9% |
以下步骤假定“订单”表中的“产品 ID”字段与“订单详细信息”表中的“订单”表之间存在一对多关系,而订单表位于关系的“一”端。
创建总计查询
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
选择要使用的表,然后单击“ 添加”。
每个表都显示为查询设计器上半部分的一个窗口。
如果使用前面列出的示例表,请添加“产品”和“订单详细信息”表。
-
双击要在查询中使用的表字段。
通常,只需将组字段和值字段添加到查询。 但是,可以使用计算而不是值字段 — 后续步骤将介绍如何执行此操作。
-
将“产品”表中的“类别”字段添加到设计网格。
-
通过在网格的第二列中键入以下表达式,创建计算每个交易的销售额的列:
总销售额: (1-[订单详细信息]。[折扣]/100) * ([订单详细信息]。[单价]*[订单详细信息]。[Quantity])
确保表达式中引用的字段为 Number 或 Currency 数据类型。 如果引用其他数据类型的字段,当您尝试切换到“数据表”视图时,Access 会显示错误消息“条件表达式中的数据类型不匹配 ”。
-
在“ 查询设计 ”选项卡上的“ 显示/隐藏 ”组中,单击“ 总计”。
“总计”行显示在设计网格中,在该行中,“分组依据”显示在第一列和第二列中。
-
第二列中,将 “总计 ”行中的值更改为 “总和”。 Sum 函数添加单个销售数字。
-
单击“ 运行 运行查询并在数据表视图中显示结果。
-
使查询保持打开状态,以便在下一部分使用。
对总计查询使用条件
在上一部分创建的查询包括基础表中的所有记录。 计算总计时,它不排除任何顺序,并且显示所有类别的总计。
如果需要排除某些记录,可以向查询添加条件。 例如,可以忽略小于 100 美元的交易,或仅计算某些产品类别的总和。 本部分中的步骤说明如何使用三种类型的条件:
-
计算总计时忽略某些组的条件。 例如,只需计算“视频游戏”、“艺术和框架”以及“运动”类别的总和。
-
计算某些总计后隐藏其条件。 例如,只能显示大于 150,000 美元的总计。
-
将单个记录排除在总计中的条件。 例如,当单价 * 数量) (值低于 100 美元时,可以排除单个销售交易。
以下步骤说明如何逐个添加条件并查看对查询结果的影响。
向查询添加条件
-
在“设计”视图中打开上一节中的查询。 为此,请右键单击查询的文档选项卡,然后单击“ 设计视图”。
-或者-
在导航窗格中,右键单击查询,然后单击“ 设计视图”。
-
在“类别 ID”列的 “条件” 行中,键入 “=娃娃或体育或艺术和框架”。
-
单击“ 运行 运行查询并在数据表视图中显示结果。
-
切换回设计视图,并在“总销售额值”列的 “条件” 行中键入 >100。
-
运行查询以查看结果,然后切换回设计视图。
-
现在添加条件以排除低于 100 美元的单个销售交易。 为此,需要添加另一列。
注意: 不能在“总销售额值”列中指定第三个条件。 在此列中指定的任何条件都应用于总值,而不是单个值。
-
将表达式从第二列复制到第三列。
-
在新列的 “总计 ”行中,选择“ 位置 ”,并在 “条件” 行中 键入 >20。
-
运行查询以查看结果,然后保存查询。
注意: 下次在“设计”视图中打开查询时,你可能会注意到设计网格中的细微变化。 第二列中, Field 行中的表达式将括在 Sum 函数内, Total 行中的值显示 Expression 而不是 Sum。
总销售额:总和 ( (1-[订单详细信息]。Discount/100) * ([订单详细信息]。Unitprice*[Orde r Details]。数量) )
你还将看到第四列。 此列是第二列的副本,但在第二列中指定的条件实际上显示为新列的一部分。
-
使用交叉表查询对多个组的数据求和
交叉表查询是一种特殊类型的查询,可在类似于 Excel 工作表的网格中显示其结果。 交叉表查询汇总值,然后按两组事实对其进行分组: 一组 () 一组行标题,另一组位于顶部 (一组列标题) 。 下图演示了示例交叉表查询结果集的一部分:
继续操作时,请记住,交叉表查询并不总是填充结果集中的所有字段,因为在查询中使用的表并不总是包含每个可能的数据点的值。
创建交叉表查询时,通常包括多个表中的数据,并且始终包括三种类型的数据:用作行标题的数据、用作列标题的数据,以及要求和或以其他方式计算的值。
本部分中的步骤假定下表:
Orders 表
订单日期 |
发货日期 |
Ship City |
运费 |
---|---|---|---|
11/14/2005 |
11/15/2005 |
Jakarta(雅加达) |
$55.00 |
11/14/2005 |
11/15/2005 |
悉尼 |
$76.00 |
11/16/2005 |
11/17/2005 |
悉尼 |
$87.00 |
11/17/2005 |
11/18/2005 |
Jakarta(雅加达) |
$43.00 |
11/17/2005 |
11/18/2005 |
巴黎 |
$105.00 |
11/17/2005 |
11/18/2005 |
斯图加特 |
$112.00 |
11/18/2005 |
11/19/2005 |
维也纳 |
$215.00 |
11/19/2005 |
11/20/2005 |
迈阿密 |
$525.00 |
11/20/2005 |
11/21/2005 |
维也纳 |
$198.00 |
11/20/2005 |
11/21/2005 |
巴黎 |
$187.00 |
11/21/2005 |
11/22/2005 |
悉尼 |
$81.00 |
11/23/2005 |
11/24/2005 |
Jakarta(雅加达) |
$92.00 |
“订单详细信息”表
订单 ID |
产品名称 |
产品 ID |
单价 |
数量 |
Discount |
---|---|---|---|---|---|
1 |
生成自己的键盘 |
1.2 |
$77.95 |
9 |
5% |
1 |
官僚不采取行动的数字 |
2 |
$78.88 |
4 |
7.5% |
2 |
计算机极客练习! The DVD! |
7 |
$14.88 |
6 |
4% |
2 |
神奇的计算机芯片 |
4 |
$32.65 |
8 |
0 |
2 |
计算机极客和神话生物 |
6 |
$78.50 |
4 |
0 |
3 |
访问! 游戏! |
5 |
$22.95 |
5 |
15% |
4 |
程序员操作图 |
1 |
$12.95 |
2 |
6% |
4 |
Ultimate飞披萨 |
8 |
$36.75 |
8 |
4% |
5 |
外部 5.25 英寸软盘驱动器 (1/4 缩放) |
9 |
$65.00 |
4 |
10% |
6 |
关系数据库关系图 |
3 |
$22.50 |
1.2 |
6.5% |
7 |
黑暗 |
11 |
$53.33 |
6 |
8% |
7 |
关系数据库关系图 |
3 |
$22.50 |
4 |
9% |
以下步骤说明如何创建按城市对总销售额进行分组的交叉表查询。 查询使用两个表达式返回带格式的日期和总销售额。
创建交叉表查询
-
在“创建”选项卡上的“查询”组中,单击“查询设计”。
-
双击要在查询中使用的表。
每个表都显示为查询设计器上半部分的一个窗口。
如果使用示例表,请双击“订单”表和“订单详细信息”表。
-
双击要在查询中使用的字段。
每个字段名称都显示在设计网格的 “字段 ”行的空白单元格中。
如果使用示例表,请从“订单”表中添加“发货城市”和“发货日期”字段。
-
在 “字段” 行的下一个空白单元格中,复制并粘贴或键入以下表达式: 总销售额:总和 (CCur ([订单详细信息].[单价]*[数量]* (1-[折扣]) /100) *100)
-
在“ 查询设计 ”选项卡上的“ 查询类型 ”组中,单击“ 交叉表”。
“总行”和“交叉表”行显示在设计网格中。
-
单击“城市”字段中“ 总计 ”行中的单元格,然后选择“ 分组依据”。 对“发货日期”字段执行相同的操作。 将 “总 销售额”字段的“总销售额”单元格中的值更改为 “表达式”。
-
在 “交叉表” 行中,将“城市”字段中的单元格设置为“ 行标题”,将“发货日期”字段设置为 “列标题”,并将“总销售额”字段设置为 “值”。
-
在“ 查询设计 ”选项卡上的“ 结果 ”组中,单击“ 运行”。
查询结果显示在“数据表”视图中。
聚合函数引用
下表列出并描述了 Access 在 Total 行和查询中提供的聚合函数。 请记住,Access 为查询提供的聚合函数比它为 Total 行提供的聚合函数更多。
函数 |
说明 |
数据类型 为 () |
---|---|---|
平均值 |
计算某列的平均值。 列中必须包含数值、货币或日期/时间数据。 该函数会忽略空值。 |
数字、货币、日期/时间 |
计数 |
对列中的项数进行计数。 |
除复杂重复的标量数据外的所有数据类型,如多值列表的列。 有关多值列表的详细信息,请参阅创建或删除多值字段一文。 |
最大值 |
返回具有最大值的项。 对于文本数据,最大值是最后一个字母顺序值 — Access 忽略大小写。 该函数会忽略空值。 |
数字、货币、日期/时间 |
最小值 |
返回具有最小值的项。 对于文本数据,最小值为第一个字母值 - Access 忽略大小写。 该函数会忽略空值。 |
数字、货币、日期/时间 |
标准偏差 |
计算值与平均值(均值)相差的程度。 有关使用此函数的详细信息,请参阅在 数据表中显示列总计一文。 |
数字、货币 |
合计 |
累加列中各项的值。 仅适用于数值和货币数据。 |
数字、货币 |
方差 |
计算列中所有值的统计方差。 该函数仅可用于数值和货币数据。 如果表包含的行少于两行,Access 将返回 null 值。 有关方差函数的详细信息,请参阅在 数据表中显示列总计一文。 |
数字、货币 |