在介绍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子句可以让我们筛选成组后的各组数据.
文章出处:http://www.diybl.com/course/comshiti/mirosoft/mfd/mcdba/2007522/37086.html

转载于:https://www.cnblogs.com/songQQ/archive/2009/05/25/1489225.html

SELECT命令中的GROUPBY和HAVING子句相关推荐

  1. Oracle中start with...connect by子句的用法

    connect by 是结构化查询中用到的,其基本语法是: select - from tablename start with 条件1 connect by 条件2 where 条件3; 例: se ...

  2. Shell脚本中循环select命令用法笔记

    在Shell脚本中,select命令是一种菜单扩展的循环方式. 语法结构如下: select Menu in (list) do command done 说明:当程序运行到select语句时,会自动 ...

  3. mysql select having_MySQL中SELECT子句WHERE和HAVING的区别

    MySQL中SELECT子句WHERE和HAVING的区别 WHERE子句: 在分组之前使用,表示从所有数据中根据条件筛选出部分数据,以完成分组的要求. 在一个WHERE子句中使用列别名是不允许的,因 ...

  4. 题目:某些SELECT语句中的WHERE子句不使用索引,以下说法正确的是()

    题目:某些SELECT语句中的WHERE子句不使用索引,以下说法正确的是() A.where语句中使用到"!=",将不使用索引 B.where语句中使用"||" ...

  5. select命令详解 mysql_详解用SELECT命令在MySQL执行查询操作的教程

    SQL SELECT命令被用来获取数据从MySQL数据库.可以使用此命令在mysql>提示符下或使用脚本,如PHP. 语法: 下面是通用的SQL SELECT命令的语法来从MySQL表提取数据: ...

  6. SQL中连接(JOIN)子句介绍

    本文主要介绍 SQL(Structured Query Language)中连接(JOIN)子句的相关知识,同时通过用法示例介绍连接的常见用法. 说明:本文的用法示例是面向 MySQL 数据库的. 1 ...

  7. php运算符百分号,T-SQL 转义select … like中的特殊字符(百分号)

    众所周知,T-SQL中LIKE运算符使用%符号表示通配符.很多时候可能需要查询包含有%的数据,比如需要查询字段coupon中含有5%的数据.那么如何使用已经有百分号(%)符号的LIKE搜索字符串呢? ...

  8. if for while until case select 命令

    bash脚本编程 shell脚本编程的特点: 过程式编程语言 脚本类语言 解释型语言 过程式编程语言: 顺序执行结构: 以从左到右,从上到下,顺序执行所有语句命令. shell脚本的主体结构 选择执行 ...

  9. linux 下orapwd 未找到命令,orapwd命令中entries参数的作用

    orapwd命令中entries参数的作用 作者 blue_stone E-mail: blue_stone@xinhuanet.com Blog: http://bluestone.cublog.c ...

最新文章

  1. 修改IIS7并发连接数目限制
  2. 作为IT从业者,你是如何做好个人职业规划?
  3. 5886. 如果相邻两个颜色均相同则删除当前颜色
  4. 新华三的背景_星际联盟一行莅临新华三集团杭州总部,展望分布式存储广阔发展空间...
  5. Python 字符串类型格式化
  6. 使用Xtrabackup来备份你的mysql
  7. SAI2 安装及导入笔刷素材
  8. 凯恩帝绝对坐标清零_凯恩帝系统加工件数自动清零怎么设置
  9. 域共享文件夹服务器怎么设置密码,域环境下共享文件夹加密、Windows 2008 Server局域网共享文件夹设置权限设置的方法...
  10. 批量生成图片的数据增强常用的脚本
  11. 【测试面试】测试面试题集锦(二)
  12. Linux下分割、合并PDF(pdftk)
  13. 怎样提交新站的网址给搜索引擎?史上最新最全的网站提交地址
  14. web前端svg图标使用(关于阿里iconfont的symbol 引用)
  15. 小游戏贪吃蛇的c++源代码
  16. 科技类毕业论文文献有哪些?
  17. 微信seo搜索精准引流怎么做呢?(案例效果图)
  18. MCEN90008 FLUID DYNAMICS
  19. 尤雨溪自述:打造Vue 3背后的故事
  20. 计算机毕业设计JAVA课堂管理系统小程序用户端mybatis+源码+调试部署+系统+数据库+lw

热门文章

  1. json转成类对象转成xml全过程
  2. docker oracle 11g
  3. 金融信息交换协议(FIX)v5.0
  4. @hot热加载修饰器导致static静态属性丢失(已解决)
  5. elasticsearch,elasticsearch-service安装
  6. linux中的守护进程
  7. 通过webbrowser实现js与winform的相互调用
  8. orapwd创建密码文件
  9. mongodb morphia
  10. servlet乱码 解决方法 2种方法