在查询结果中对行进行分组 (Visual Database Tools)

适用于:SQL Server

如果要创建分类汇总或显示表子集的其他摘要信息,请使用聚合查询创建组。 每个组汇总了表中具有相同值的行的数据。

例如,你可能希望在 titles 表中查看书籍的平均价格,但按发布者细分结果。 为此,按发布者对查询进行分组(例如,pub_id)。 生成的查询输出可能如下所示:

查询结果的屏幕截图:按发布者分组的平均价格。

对数据进行分组时,只能显示摘要或分组数据,例如:

  • 分组列(子句中显示的 GROUP BY 列)的值。 在上面的示例中,pub_id 是分组列。

  • 由聚合函数(如 SUM()和 AVG()生成的值。 在上面的示例中,第二列是通过将 AVG( ) 函数与 price 列一起使用生成的。

无法显示单个行中的值。 例如,如果仅按发布者分组,则不能在查询中显示单个标题。 因此,如果将列添加到查询输出, 查询和视图设计器工具(Visual Database Tools) 会自动将它们添加到 GROUP BYSQL 窗格(Visual Database Tools)中的语句子句。 如果希望改为聚合列,可以为该列指定聚合函数。

如果按多个列进行分组,则查询中的每个组都显示所有分组列的聚合值。

例如,下面对 titles 表进行的查询按出版商 (pub_id) 和书籍类型 (type) 进行分组。 查询结果按发布者排序,并显示发布者生成的每种不同类型的书籍的摘要信息:

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

生成的输出可能如下所示:

查询结果的屏幕截图:按发布者分组的价格和类型。

行分组

  1. 通过将要汇总的表添加到“关系图”窗格来启动查询。

  2. 右键单击“关系图”窗格的背景,再从快捷菜单中选择“添加分组依据”。 查询和视图设计器会在“条件”窗格的网格中添加一个“分组依据”列。

  3. 将您想要分组的列添加到“条件”窗格中。 如果希望将列出现在查询输出中,请确保选中了 输出 列用于输出。

    查询和视图设计器将子 GROUP BY 句添加到 SQL 窗格中的语句。 例如,SQL 语句可能如下所示:

    SELECT pub_id
    FROM titles
    GROUP BY pub_id;
    
  4. 将要聚合的一列或多列添加到“条件”窗格中。 确保将该列标记为输出。

  5. 在将要进行聚合的列的 Group By 网格单元中,选择合适的聚合函数。

    查询和视图设计器会自动为要汇总的列分配列别名。 可以将此自动生成的别名替换为更有意义的别名。 有关详细信息,请参阅“创建列别名”(Visual Database Tools)。

    将列别名添加到查询结果集的屏幕截图。

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

    SELECT pub_id,
           SUM(price) AS Totalprice
    FROM titles
    GROUP BY pub_id;