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子句可以让我们筛选成组后的各组数据.  

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

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

sql exists,in,group by,having

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

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

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

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

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

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

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

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
  • 9319

SQL语句where,Group By,having order by 的详细使用方法

 1. Group By 语句简介: Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。它的作用是通过一定的规则将一个数据集划分成若干个小...
  • happystarcat
  • happystarcat
  • 2014-04-21 15:55:09
  • 16427

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

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

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:42
  • 16114

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
  • 7867
收藏助手
不良信息举报
您举报文章:SQL学习之Group by和Having
举报原因:
原因补充:

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