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

适用于: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  

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

查询结果:按发布者分组的价格和类型

对行进行分组

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

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

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

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

    SELECT pub_id  
    FROM titles  
    GROUP BY pub_id  
    
  4. 将您想要聚合的列添加到“条件”窗格中。 请确保该列已设置为输出。

  5. 在要聚合的列的 分组依据 网格单元中,选择适当的聚合函数。

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

    向查询结果集添加列别名

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

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

另请参阅

排序和分组查询结果