Access 2003完整教程:使用自定义表达式汇总或聚合值 (ADP)

注释本主题中的信息仅适用于 Microsoft Access 项目 (.adp)。

除了使用聚合函数汇总数据,还可以创建自定义表达式以生成汇总值。可以使用自定义表达式在聚合查询中的任意地方代替聚合函数。

例如,可以在titles表中创建查询,不仅显示平均价格,还有打折后的平均价格。

在表中不能包含一个基于仅涉及到表中单独行的计算的表达式;表达式必须基于一个汇总值,因为只有汇总值在计算表达式时可用。

  1. 在“数据库”窗口中,单击“对象”下的“查询”按钮图像,再单击要打开的查询,然后单击“数据库”窗口工具栏上的“设计”
  2. 为查询指定组。

    操作方法

    背景信息

    如果要为表的子集创建小计或显示其他汇总信息,可以使用聚合查询创建组。每个组汇总表中有相同值的所有行的数据。

    例如,要按出版商查看“titles”表中书的平均价格。可以按出版商对查询进行分组(如“pub_id”)。查询结果输出可能如下:

    查询输出

    对数据分组时,可以仅显示汇总或分组数据,如:

    • 分组列的值(出现在 GROUP BY 子句中)。在上述例子中,“pub_id”是进行分组的列。
    • 由聚合函数(如 SUM(?) 和 AVG(?))产生的值。在上述例子中,第二列即是通过对price列使用 AVG(?) 函数产生。

    不能显示单独的行的值。例如,如果仅根据出版商分组,就不能在查询中显示单独的书目。因此,如果向查询输出中添加列,“查询设计器”自动将其添加到“SQL”窗格中的语句的 GROUP BY 子句中。如果希望汇总某一列,可以为其指定一个聚合函数。

    如果对多个列进行分组,查询中的每个组显示所有分组列的汇总值。

    例如,以下基于titles表的查询根据出版商 (pub_id) 和书籍类型 (type) 分组。查询结果按出版商进行组织,并且显示该出版商出版每种不同类型的书的汇总信息:

    SELECT pub_id, type, SUM(price) Total_price
    FROM titles
    GROUP BY pub_id, type
    

    输出结果如下:

    查询输出

    分组行

    1. 在“数据库”窗口中,单击“对象”下的“查询”按钮图像,再单击要打开的查询,然后单击“数据库”窗口工具栏上的“设计”
    2. 通过向“图表”窗格添加要汇总的表、视图或函数,启动查询。

      操作方法

      当创建查询时,是从表、视图或函数中检索数据。如果要在查询中使用这些对象,可将其添加到“图表”窗格中。

      向查询中添加表、视图或用户定义函数

      1. 在“数据库”窗口中,单击“对象”下的“查询”按钮图像,再单击要打开的查询,然后单击“数据库”窗口工具栏上的“设计”
      2. 在“图表”窗格中,用右键单击背景,再从快捷菜单中选择“添加表”。
      3. 在“添加表”对话框中,选择“表”、“视图”或“函数”选项卡。
      4. 在列表中,双击要添加的项目。
      5. 在完成了对项目的添加后,请单击“关闭”按钮。

      “查询设计器”据此更新“图表”窗格、“网格”窗格、“SQL”窗格。

      可以拖动对象到“图表”窗格。可以从数据库窗口拖动表、视图或内嵌函数。

      可以从“数据库设计器”拖动列或表,或者从剪贴板粘贴。

      在“SQL”窗格的语句中引用表和视图时,它们会被自动添加到查询中。

      如果用户没有足够的权限,“查询”设计器不会显示表、视图或内嵌函数的数据列。这时,只会显示表、视图或内嵌函数的标题栏和“*(所有列)”复选框。

      向新查询中添加现有查询

      1. 如有必要,单击SQL按钮图像以显示SQL窗格。
      2. 在“SQL”窗格中,在 FROM 后键入左右括号 ()。
      3. 为现有查询打开“查询设计器”。(现在有两个打开的“查询设计器”。)
      4. 显示内部查询 - 要包含在新查询(也叫“外部查询”)中的现有查询 - 的“SQL”窗格。
      5. 选取“SQL”窗格中的所有文本,并复制到剪贴板。
      6. 在新查询的“SQL”窗格中单击,使光标置于添加的括号中,并粘贴剪贴板的的内容。
      7. 在“SQL”窗格中,在右括号后,添加别名。有关 SQL 别名和子查询的详细信息,请参阅 Microsoft SQL Server 文档。
    3. 用鼠标右键单击“图表”窗格的背景,然后从快捷菜单中选择“分组”。“查询设计器”会将一个“分组”列添加到“网格”窗格的网格中。
    4. 将要分组的列添加到“网格”窗格。如果要在查询输出中显示列,确定选中了“输出”列。

      “查询设计器”将 GROUP BY 子句添加到“SQL”窗格的语句中。例如,SQL 语句可能如下:

      SELECT pub_id
      FROM titles
      GROUP BY pub_id
      
    5. 将要汇总的列添加到“网格”窗格。要确保已将该列标记为输出。
    6. 在要汇总的列的“分组”网格单元格中,选择适当的聚合函数。

      “查询设计器”自动向汇总的列分派一个列别名。可以用更有意义的名称代替自动生成的别名。

      查询输出

      SQL 窗格中相应的语句可能如下所示:

      SELECT pub_id, SUM(price) AS Totalprice
      FROM titles
      GROUP BY pub_id
      
  3. 移到“网格”窗格的空白行,然后在“列”列中键入表达式。

    “查询设计器”自动为表达式指定一个列别名,以在查询输出中创建一个有用的列标题。

  4. 在表达式的“分组依据”列中,选择“表达式”。

上页:Access 2003完整教程:在查询中汇总或聚合所有行的值 (ADP) 下页:Access 2003完整教程:在查询中使用表达式 (ADP)

Access 2003完整教程:使用自定义表达式汇总或聚合值 (ADP)

Access 2003完整教程:在查询中使用表达式 (ADP)Access 2003完整教程:在同一查询中使用 HAVING 和 WHERE 子句 (ADP)
Access 2003完整教程:验证查询 (ADP)Access 2003完整教程:查看外键约束属性 (ADP)
Access 2003完整教程:缩放数据库图表 (ADP)Access 2003完整教程:即将删除一行或多行。
Access 2003完整教程:不允许空约束表达式。Access 2003完整教程:DELETE 语句与 COLUMN REFERENCE 约束冲突。
Access 2003完整教程:已对多行发生影响。Access 2003完整教程:已成功执行了查询。
Access 2003完整教程:已对照数据源检查过 SQL 语法。Access 2003完整教程:确定要删除数据库中选定的关系吗?
Access 2003完整教程:“数据库设计器”出错Access 2003完整教程:删除选定的列将同时删除关系。
Access 2003完整教程:是否保存对数据库图表的更改?Access 2003完整教程:是否保存对该表的更改?
Access 2003完整教程:INSERT INTO 子句的值列表中出错:无法识别“<Os>”Access 2003完整教程:名称无效。必须为对象提供名称。
Access 2003完整教程:不能对空列编制索引。Access 2003完整教程:表“<0s>”中的列和已有可用的主键或唯一约束不匹配。
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号