如何:将查询结果中的行分组
更新:2007 年 11 月
如果要创建小计或显示表的子集的其他汇总信息,可使用聚合查询创建组。每个组对表中具有相同值的所有行的数据进行汇总。
例如,假设希望看到 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
得到的输出可能类似于:
说明: |
---|
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 Visual Studio 设置。 |
对行进行分组
通过将要汇总的表添加到“关系图”窗格中来启动查询。
右击“关系图”窗格的背景,然后从快捷菜单中选择“添加分组依据”。查询和视图设计器会在“条件”窗格中的网格中添加一个“分组依据”列。
将要分组的一列或多列添加到“条件”窗格中。如果希望该列出现在查询输出中,确保为输出选定了“输出”列。
查询和视图设计器将 GROUP BY 子句添加到“SQL”窗格的语句中。例如,SQL 语句可能类似于:
SELECT pub_id FROM titles GROUP BY pub_id
将要聚合的一列或多列添加到“条件”窗格中。确保将该列标记为输出。
在要进行聚合的列的“分组依据”网格单元格中,选择适当的聚合函数。
“查询及视图设计器”将自动为要汇总的列分配列别名。可用更有意义的名称替换这一自动生成的别名。有关更多详细信息,请参见如何:创建列别名。
“SQL”窗格中的相应语句可能如下所示:
SELECT pub_id, SUM(price) AS Totalprice FROM titles GROUP BY pub_id