深入浅析SQL中的group by 和 having 用法

 更新时间:2017年08月04日 15:03:36   投稿:mrr  
这篇文章主要介绍了SQL中的group by 和 having 用法浅析,需要的的朋友参考下吧

一、sql中的group by 用法解析:

  Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。

  作用:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。

  注意:group by 是先排序后分组!

  举例说明:如果要用到group by 一般用到的就是“每”这个字, 例如现在有一个这样的需求:查询每个部门有多少人。就要用到分组的技术 

select DepartmentID as '部门名称',COUNT(*) as '个数'
  from BasicDepartment
  group by DepartmentID

  这个就是使用了group by +字段进行了分组,其中我们就可以理解为我们按照部门的名称ID
  DepartmentID将数据集进行了分组;然后再进行各个组的统计数据分别有多少;

二、group by 和having 解释

  前提:必须了解sql语言中一种特殊的函数——聚合函数。

  例如:SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

  WHERE关键字在使用集合函数时不能使用,所以在集合函数中加上了HAVING来起到测试查询结果是否符合条件的作用。

  having称为分组过滤条件,也就是分组需要的条件,所以必须与group by联用。

  需要注意说明:当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:

  1、执行where子句查找符合条件的数据;

  2、使用group by 子句对数据进行分组;

  3、对group by 子句形成的组运行聚集函数计算每一组的值;

  4、最后用having 子句去掉不符合条件的组。

  having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.

  having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。

  having子句限制的是组,而不是行。聚合函数计算的结果可以当条件来使用,where子句中不能使用聚集函数,而having子句中可以。

总结

以上所述是小编给大家介绍的SQL中的group by 和 having 用法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 如何安装 SQL Server 2016及SQL Server Management Studio安装配置

    如何安装 SQL Server 2016及SQL Server Man

    这篇文章主要介绍了如何安装 SQL Server 2016及SQL Server Management Studio安装配置,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下
    2024-12-12
  • sql server 2000阻塞和死锁问题的查看与解决方法

    sql server 2000阻塞和死锁问题的查看与解决方法

    在实际引用当中,数据库阻塞和死锁在程序开发过程经常出现,下面通过介绍数据库阻塞和数据库死锁,并提供查看和解决阻塞和死锁的方法
    2014-01-01
  • 教你恢复SQLSERVER的master系统库的方法

    教你恢复SQLSERVER的master系统库的方法

    这篇文章主要介绍了恢复SQLSERVER的master系统库,本文介绍可能需要恢复master数据库的情况以及如何正确完成这些步骤,需要的朋友可以参考下
    2022-09-09
  • 用SQL统计SQLServe表存储空间大小的代码

    用SQL统计SQLServe表存储空间大小的代码

    当SQLServer数据库越来越庞大,而其中的表有非常多的时候,想要知道到底是哪些表最耗存储空间,到底该怎样统计各个表的存储大小呢
    2012-05-05
  • SQL里类似SPLIT的分割字符串函数

    SQL里类似SPLIT的分割字符串函数

    SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。
    2011-04-04
  • sqlserver中通过osql/ocmd批处理批量执行sql文件的方法

    sqlserver中通过osql/ocmd批处理批量执行sql文件的方法

    上周在测试环境建了几十张表,保存了.sql文件,准备在正式环境重建的时候懒得一个个打开建了,做一在网上搜寻了一下,果然有简单点的方法。
    2011-08-08
  • sql中时间以5分钟半个小时任意间隔分组的实现方法

    sql中时间以5分钟半个小时任意间隔分组的实现方法

    这篇文章主要介绍了sql中时间以5分钟半个小时任意间隔分组的实现方法,在文中给大家提到了sql server时间查询的代码,需要的朋友可以参考下
    2019-06-06
  • 数据库访问性能优化

    数据库访问性能优化

    这篇文章主要介绍了数据库访问性能优化,小编总结了一些面向程序员的基本优化法则,本文将结合实例来坦述数据库开发的优化知识,需要的朋友可以参考下
    2015-08-08
  • Sql Server 字符串聚合函数

    Sql Server 字符串聚合函数

    Sql Server 有如下几种聚合函数SUM、AVG、COUNT、COUNT(*)、MAX 和 MIN,但是这些函数都只能聚合数值类型,无法聚合字符串。
    2009-06-06
  • 去掉前面的0的sql语句(前导零,零前缀)

    去掉前面的0的sql语句(前导零,零前缀)

    一个列的格式是单引号后面跟着4位的数字,比如’0003,’0120,’4333,我要转换成3,120,4333这样的格式,就是去掉单引号和前导的0,用以下语句就可以。
    2011-08-08

最新评论