SQL Server数据分组

SQL Server数据分组

一、SQL Server Group By语句。

  1. Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

  2. 以下是 GROUP BY 子句的语法:

    SELECT
    	select_list
    FROM
    	table_name
    GROUP BY
    	column_name1,
    	column_name2 ,...;
    
  3. 在此查询语法中, GROUP BY 子句根据其后面的列的每个值结合将一个“数据集”分组。

二、 GROUP BY子句和聚合函数。

  1. 和聚合函数使用。
    - 从字面上来理解,GROUP 表示分组、BY 后接字段名,表示根据某个字段进行分组。
    - GROUP BY 语句通常配合聚合函数(如 COUNT()、MAX() 等)一起用于统计数据,根据一个或多个列对结果集进行分组,可以在分组之后可以对组内结果进行计数。
    - 聚合函数对组执行计算并返回每个组的唯一值。

  2. 常用的聚合函数。
    - COUNT() 函数返回每个组中的行数。
    - SUM() 函数返回每个组中列的数值总和。
    - AVG() 函数返回每个组的平均值。
    - MIN() 函数返回每个组中的最小值。
    - MAX() 函数返回每个组中的最大值。

  3. 它们的用法大致一样,例如:

    SELECT
    	select_list1,
    	COUNT(select_list2), /*可用于数字和字符列求每组的数量,一般是非NULL值的数量;*/
    	/*而COUNT(*)可以返回表中的行数(包括有NULL值的列)。*/
    	SUM(select_list3),/*可用于数字列求数值的总和,忽略NULL值。*/
    	AVG(select_list4),/*仅用于数字列求数值的平均值。自动忽略NULL值。*/
    	MIN(select_list5),/*可用于数字、字符和日期时间列的最小值,忽略NULL值。*/
    	MAX(select_list6)/*可用于数字、字符和日期时间列的最大值,忽略NULL值。*/
    FROM
    	table_name
    GROUP BY
    	column_name1,
    	column_name2,...;
    

三、SQL Server Having子句。

  1. HAVING 子句通常与[GROUP BY]子句一起使用,以根据指定的条件列表过滤分组。

  2. 以下是 HAVING 子句的语法:

    SELECT
    	select_list
    FROM
    	table_name
    GROUP BY
    	group_list
    HAVING
    	conditions;
    
  3. 在此语法中, GROUP BY 子句将行汇总为分组, HAVING 子句将一个或多个条件应用于这些每个分组。只有使条件评估为 TRUE 的组才会包含在结果中。 换句话说,过滤掉条件评估为 FALSE 或 UNKNOWN 的组。

  4. 因为SQL Server在 GROUP BY 子句之后处理 HAVING 子句,所以不能通过使用列别名来引用选择列表中指定的聚合函数。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值