`
dasheng
  • 浏览: 147063 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Group by和Having

SQL 
阅读更多

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

分享到:
评论

相关推荐

    order by 、group by 、having的用法

    order by 、group by 、having的用法区别 order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。 group by 从英文里理解就是分组。必须有“聚合函数”来...

    sql中的 where 、group by 和 having 用法解析

    --sql中的 where 、group by 和 having 用法解析 --如果要用到group by 一般用到的就是“每这个字” 例如说明现在有一个这样的表:每个部门有多少人 就要用到分组的技术 select DepartmentID as '部门名称',COUNT(*)...

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

    一、sql中的group by 用法解析:  Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。  作用:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理...

    实例详解Group by和Having子句

    元旦节,干点啥呢,小编给大家分享Group by和Having子句的小例子,具体详情如下所示: 表结构: 要求: 查询有多个员工的工资不低于2000的部门编号(就是说如果一个部门的员工大于2000的人数有两个或两个以上就...

    浅谈sql语句中GROUP BY 和 HAVING的使用方法

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

    order_by_、group_by_、having的用法

    order_by_、group_by_、having

    数据库笔试题之查询语句where,group by,having,order by执行与编写顺序详解

    本文将详细介绍WHERE、GROUP BY、HAVING、ORDER BY的执行顺序和编写顺序,以及它们之间的关系。 一、WHERE子句的执行顺序 WHERE子句的执行顺序是先对全表数据进行筛选,返回第一个结果集。WHERE子句的作用是过滤...

    MySQL中无GROUP BY情况下直接使用HAVING语句的问题探究

    在MySQL中,`GROUP BY` 和 `HAVING` 通常一起用于聚合查询,用来筛选满足特定条件的分组。然而,当没有 `GROUP BY` 子句时,直接使用 `HAVING` 可能会导致非预期的行为。这个问题的探讨主要集中在 `HAVING` 后面直接...

    SQL问题详解之_having_Group by

    该文由浅入深,用浅显的例子给大家以启发,对深入理解having,group by 有很好的帮助!

    数据库系统实验.ppt

    该文档主要讲解数据库系统实验中 SELECT 语句的使用、LIKE 子句和通配符的扩充、GROUP BY 和 HAVING 子句的使用等知识点。 一、SELECT 语句的使用 SELECT 语句是数据库系统中最基本的语句之一,它用于从数据库中...

    mysql group by having 实例代码

    在MySQL数据库中,`GROUP BY` 和 `HAVING` 是两个非常重要的SQL子句,它们在数据分析和报表生成中扮演着关键角色。`GROUP BY` 用于将数据按照指定的一个或多个列进行分组,而 `HAVING` 则用于在分组后对这些分组进行...

    oracle删除重复记录

    对于单个字段的重复记录,可以使用GROUP BY和HAVING结合COUNT函数找到重复的peopleId,然后删除ROWID不是最小的记录。 查询语句: ```sql select * from people where peopleId in (select peopleId from ...

    Mysql中order by、group by、having的区别深入分析

    在MySQL中,`ORDER BY`、`GROUP BY` 和 `HAVING` 是SQL查询中用于数据处理的关键子句,它们各自承担着不同的职责,对于数据分析和报表生成至关重要。 `ORDER BY` 子句用于对查询结果进行排序。它遵循升序(ASC)或...

Global site tag (gtag.js) - Google Analytics