适用于:SQL Server
如果要创建分类汇总或显示表子集的其他摘要信息,请使用聚合查询创建组。 每个组汇总了表中具有相同值的行的数据。
例如,你可能希望在 titles
表中查看书籍的平均价格,但按发布者细分结果。 为此,按发布者对查询进行分组(例如,pub_id
)。 生成的查询输出可能如下所示:
对数据进行分组时,只能显示摘要或分组数据,例如:
分组列的值(出现在 GROUP BY 子句中的值)。 在上面的示例中,
pub_id
是分组列。由聚合函数(如 SUM()和 AVG()生成的值。 在上面的示例中,第二列是通过将 AVG( ) 函数与
price
列一起使用生成的。
不能显示单个行中的值。 例如,如果仅按发布者分组,则不能在查询中显示单个标题。 因此,如果将列添加到查询输出,查询和视图设计器 会自动将它们添加到 SQL 窗格语句的 GROUP BY 子句中。 如果希望改为聚合列,可以为该列指定聚合函数。
如果按多个列进行分组,则查询中的每个组都显示所有分组列的聚合值。
例如,以下查询针对 titles
表按发布者(pub_id
)和书籍类型(type
)进行分组。 查询结果按发布者排序,并显示发布者生成的每种不同类型的书籍的摘要信息:
SELECT pub_id, type, SUM(price) Total_price
FROM titles
GROUP BY pub_id, type
生成的输出可能如下所示:
对行进行分组
通过将要汇总的表添加到“关系图”窗格来启动查询。
右键单击“关系图”窗格的背景,然后从快捷菜单中选择“添加分组依据”。 查询和视图设计器在“条件”窗格中的网格中添加了一个名为 的“按 分组”的列。
将要分组的列或列添加到“条件”窗格。 如果希望将列出现在查询输出中,请确保选中了 输出 列用于输出。
查询和视图设计器将 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