SQL学习之Group by和Having

转载 2007年10月08日 16:13:00

转自:http://dev.yesky.com/230/2669730.shtml

  在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

SELECT SUM(population) FROM bbc

  这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。

  通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值,也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值。

  HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前.
而 HAVING子句在聚合后对组记录进行筛选。

  让我们还是通过具体的实例来理解GROUP BY 和 HAVING 子句,还采用第三节介绍的bbc表。

  SQL实例:

  一、显示每个地区的总人口数和总面积:

SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region

  先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。

  二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。

SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000

  在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。

  相反,HAVING子句可以让我们筛选成组后的各组数据.  

Oracle中SQL语句学习五(统计分组语句group by和having)

在应用系统开发中,进行需要统计数据库中的数据,当执行数据统计时,需要将表中的数据进行分组显示,在统计分组中是通过group by子句、分组函数、having子句共同实现的。其中group by子句用于...
  • icanlove
  • icanlove
  • 2014年08月26日 16:23
  • 14443

hive:(group by, having;order by)的使用;group by+多个字段,以及wiki说的group by两种使用限制验证

hive上 查询 hive> select * from app_data_stats_historical where os='1' group by dt limit 100; 出现结果如下: 2...
  • longshenlmj
  • longshenlmj
  • 2014年03月24日 16:12
  • 14417

sql的having深入理解;group by只返回一组的一行,compute更好

Having where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。 having 子句的作用...
  • longshenlmj
  • longshenlmj
  • 2014年01月02日 14:46
  • 3323

sql学习(6)——Mysql数据库where,group by,having

首先关于mysql中select语句的顺序:select * from tablename where * group by * having * oder by * limit*。 用表:clh_t...
  • Dean_a_lone
  • Dean_a_lone
  • 2017年11月13日 11:39
  • 80

黑马程序员之SQL 学习笔记:SQL中group by 和having的使用

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

sql中的group by 和 having 用法解析

文章来源:http://www.cnblogs.com/wang-123/archive/2012/01/05/2312676.html   --sql中的group by 用法解析: -- G...
  • dangnianmingyue_gg
  • dangnianmingyue_gg
  • 2015年08月03日 16:47
  • 318

SQL中GROUP BY语句与HAVING语句的使用

一、GROUP BY GROUP BY语句用来与聚合函数(aggregate functions such as COUNT, SUM, AVG, MIN, or MAX.)联合使用来得到一个或多个...
  • chaplin888
  • chaplin888
  • 2012年06月27日 09:58
  • 321

sql中的group by 和 having 用法解析

--sql中的group by 用法解析: -- Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。 --它的作用是通过一定的规则将一个数据集划分成若...
  • zkzqlove
  • zkzqlove
  • 2013年09月08日 15:35
  • 244

SQL Server 和 MySQL中 from where group by having order select 执行顺序

原文链接:http://www.9streets.cn/art-php-467.html sql和mysql对于别名不能调用的一些理解   在写sql的时候,由于有部分语句别名不能调用,百...
  • piaoboyijianke1
  • piaoboyijianke1
  • 2013年01月11日 22:39
  • 2015

LINQ体验(7)——LINQ to SQL语句之Group By/Having和Exists/In/Any/All/Contains

我们继续讲解LINQ to SQL语句,这篇我们来讨论Group By/Having操作符和Exists/In/Any/All/Contains操作符。 Group By/Having操作符 适用...
  • Linux7985
  • Linux7985
  • 2011年11月01日 15:14
  • 662
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:SQL学习之Group by和Having
举报原因:
原因补充:

(最多只允许输入30个字)