如何:对表中所有行的值进行汇总或聚合
更新:2007 年 11 月
使用聚合函数,可为表中所有值创建汇总。例如,可创建如下所示的查询,以显示 titles 表中所有书籍的总价:
SELECT SUM(price)
FROM titles
通过对多个列使用聚合函数,可在同一查询中创建多个聚合。例如,可创建计算 price 列的合计和 discount 列的平均值的查询。
也可在同一查询中用不同方式聚合同一列(如合计、计数以及求平均值)。例如,下列查询对 titles 表的 price 列求平均值和汇总:
SELECT AVG(price), SUM(price)
FROM titles
如果添加搜索条件,则可聚合满足该条件的行子集。
说明: |
---|
也可对表中的所有行或满足特定条件的行进行计数。有关详细信息,请参见如何:对表中的行进行计数。 |
当为表中的所有行创建单个聚合值时,仅显示聚合值本身。例如,如果对 titles 表的 price 列的值进行合计,将也无法显示单个书名、出版商名称等。
说明: |
---|
如果要进行小计(即创建组),则可显示每个组的列值。有关详细信息,请参见如何:将查询结果中的行分组。 |
说明: |
---|
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。 |
对所有行的值进行聚合
确保您要聚合的表已经在“关系图”窗格中。
右击“关系图”窗格的背景,再从快捷菜单中选择“分组依据”。查询和视图设计器会在“条件”窗格中的网格中添加一个“分组依据”列。
将要聚合的列添加到“条件”窗格中。确保将该列标记为输出。
“查询及视图设计器”将自动为要汇总的列分配列别名。您可以用更有意义的名称替换此别名。有关详细信息,请参见如何:创建列别名。
在“分组依据”网格列中,选择适当的聚合函数,如“总和”、“平均”、“最小”、“最大”和“计数”。如果只想聚合结果集中的唯一行,请选择带 DISTINCT 选项的聚合函数,如“最小 Distinct”。不要选择“分组依据”、“表达式”或“位置”,因为这些选项不适用于聚合所有行。
说明: Oracle 支持其他聚合函数。
查询和视图设计器用您指定的聚合函数替换“SQL”窗格的语句中的列名。例如,SQL 语句可能类似于:
SELECT SUM(price) FROM titles
如果要在查询中创建多个聚合,请重复第 3 和第 4 步。
当您将另一列添加到查询输出列表中或 ORDER BY 列表时,查询和视图设计器会自动将“Group By”一词填充到网格的“分组依据”列中。选择适当的聚合函数。
添加搜索条件(如果有的话),以指定要汇总的行子集。
当执行查询时,“结果”窗格将显示指定的聚合。
说明: |
---|
查询和视图设计器将聚合函数一直作为“SQL”窗格中 SQL 语句的一部分进行维护,直到您显式关闭“分组依据”模式为止。因此,如果您通过更改查询类型或更改“关系图”窗格中显示的表或表值对象来修改查询,那么所产生的查询可能包含无效的聚合函数。 |