(1)group by子句

group by 根据by指定的规则对数据进行分组。

分组:即将一个数据集划分成若干个小区域,再对若干个小区域进行数据处理。

     语法:

 

 group by 子句为列中的每个值组合生成一个组。

group by子句的例子:

          

 

(2)group by子句和聚合函数

       ①group by子句通与聚合函数一起用于统计数据;

       ②聚合函数对组执行计算并返回每个组的唯一值;

      ③group by子句将行排列成组,聚合函数返回每个组的统计量(总数量、最小值、最大值、平均值、总和等)

例子:

 

常用的聚合函数:

  《1》带有count()函数示例的group by子句

 例子:

  

 

     《2》group by子句带有min()和max()函数的示例

    例子:

          

 

      《3》带avg()函数示例的group by子句

     例子:

          

 

      《4》带有sum()函数示例的group by子句

     例子:

         

 

(3)having子句

      having子句通常与group by子句一起,以根据指定的条件列表过滤分组

语法:

 

   描述:

              ①group by子句将行汇总为分组,having 子句将一个或多个条件应用于这些每个分组;

              ②只有使条件评估为true的组才会包含在结果中;

             ③过滤掉条件评估为 false unknown 的组;

            ④因为SQL Server group by子句之后处理having 子句,所以不能通过使用列别名来引用选择列表中指 定的聚合函数。

  因④说明,以下查询将失败:

          

 

必须明确使用having子句中的聚合函数表达式,如下:

         

 

《1》having子句与count()函数示例

          例子:

               

 

         例子说明:

            ①group by子句按客户和订单年份对销售订单进行分组

            ②count() 函数返回每个客户每年下达的订单数

            ③having 子句筛选出订单数至少为2的所有客户

《2》having子句与sum()函数示例

例子:

   

 

例子说明:

        ①sum函数计算销售订单的净值。

        ②having子句过滤净值小于或等于20000的销售订单

《3》having子句与max()和min()函数示例

     例子:

          

 

《4》having子句与avg()函数示例

         例子:

             

 

更多推荐

SQL语言中的分组数据