SQL学习之Group by和Having

转载 2007年10月10日 19:52:00
在介绍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子句可以让我们筛选成组后的各组数据.  

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1815489

关于飞机射击类游戏的设计原理 (加入时间:2001-3-4)

作者:尹龙水平有限,请别见怪:)   众所周知,飞机射击类游戏几乎是我们接触到的第一类计算机游戏,不论是在街机中还是在计算机中,这一类游戏都是非常容易上手和招人喜爱的。就算是在这个即时战略游戏、3D第...
  • ghj1976
  • ghj1976
  • 2001-04-25 18:16:00
  • 1985

SQL中where, group by, having的用法和区别

group by,where,having 是数据库查询中最常用的几个关键字。在工作中,时常用到,那么,当一个查询中使用了where ,group by ,having及聚集函数时 ,执行顺序是怎么样...
  • Shine_rise
  • Shine_rise
  • 2017-02-08 23:07:30
  • 7019

sql exists,in,group by,having

语法: EXISTS subquery 参数: subquery 是一个受限的 SELECT 语句 (不允许有 COMPUTE 子句和 INTO 关键字)。 结果类型: Boolean 。如果子查...
  • maladoufu
  • maladoufu
  • 2012-11-17 20:37:18
  • 3896

SQL语句Group By和Having需要注意的地方

SQL语句Group By、HavingGroup By语句需要注意的地方
  • u013457106
  • u013457106
  • 2017-08-10 16:26:15
  • 630

sql语句中GROUP BY 和 HAVING的使用 count()

在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,  例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用...
  • sinat_21274091
  • sinat_21274091
  • 2016-07-09 18:39:55
  • 4749

SQL中的Where,Group By,Order By和Having

数据库,每个程序或多或少都会有所接触。 说到SQL语句,大家最开始想到的就是他的查询语句: select * from tableName; 这是最简单的一种查询方式,不带有任何的条件。...
  • qitian0008
  • qitian0008
  • 2012-08-07 22:37:14
  • 8120

sql 语句 嵌套查询 (where,group by,having,in,some,all...)

SQL语句 - 嵌套查询    嵌套查询的意思是,一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询。其中外层查询也称为父查询,...
  • kpchen_0508
  • kpchen_0508
  • 2015-04-21 16:18:34
  • 3442

SQL语句 where,group by,having,order by执行顺序

当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序  2010-06-06 15:34  使用count(列名)当某列出现null值的时...
  • rj532029887
  • rj532029887
  • 2014-09-14 01:03:20
  • 9369

sql篇 select from where group by having order by

以前,自己总是记不住如何用group by,如何用order by,什么时候用group by,什么时候用order by,什么时候两者一起用,怎么用,谁先谁后,现在,我们就一起来说一下Select ...
  • u013045878
  • u013045878
  • 2016-08-12 15:58:24
  • 3674

count,group by,having(SQL)

---所有书籍价格的统计select sum(price)总价,avg(price)均价,max(price)最高价,min(price)最低价from titles---统计where条件的记录--...
  • leamonjxl
  • leamonjxl
  • 2011-06-20 17:17:00
  • 7874
收藏助手
不良信息举报
您举报文章:SQL学习之Group by和Having
举报原因:
原因补充:

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