`
snowstone
  • 浏览: 19145 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

having条件过滤与where条件过滤(转)

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

相关推荐

    02.hive查询语法--分组聚合--groupby查询--where过滤和having过滤的区别.mp4

    02.hive查询语法--分组聚合--groupby查询--where过滤和having过滤的区别.mp4

    SQL中Having与Where的区别及注意

    给大家详细的介绍了SQL中Having与Where的区别,以及这两者的注意事项,文中还分享了Having与Where的示例代码,相信对大家的理解和学习很有帮助,感兴趣的朋友们可以参考借鉴,有需要的朋友们可以一起学习学习。

    sql where 和 having的区别

    “Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。 2.使用的角度: where后面之所以不能使用聚合函数是因为where的执行顺序...

    数据库SQL中having和where的用法区别

    “Having”是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。  聚合函数,SQL基本函数,聚合函数对一组值执行计算,并返回单个值。除了 COUNT 以外,聚合函数都会...

    SQL面试知识点总结很全

    where不能使用聚合函数、having中可以使用聚合函数 where是一个约束声明,使用where来约束来自数据库的数据;where是在结果返回之前起作用的;where中不能使用聚合函数。 having是一个过滤声明;在查询返回结果集以后,...

    熟练掌握 openGauss 单表查询的语法结构及其使用方法  掌握设计正确查询语句以实现查询要求的方法 -简单单表查询(

     正确区分元组过滤条件(WHERE 子句)和分组过滤条件(HAVING 短语)的异同  掌握 Order by 的使用  掌握使用 DISTINCT 实现查询结果的去重方法  掌握空值 NULL 的使用方法  掌握表别名的使用场合及...

    MySql 中聚合函数增加条件表达式的方法

    Mysql 与聚合函数在一起时候where条件和having条件的过滤时机 where 在聚合之前过滤 当一个查询包含了聚合函数及where条件,像这样的情况 select max(cid) from t where t.id<999>=5 先分组,再聚合,然后过滤聚合...

    Oracle SQL最佳实践

    如果在GROUP BY中过滤数据,在WHERE从句中指定条件比在HAVING从句中有更好的性能,因为在GROUP之前已经过滤掉数据,因此更少的行被汇总  3.UNION会对两个SELECT语句的结果集执行一个SORT,并消除重复行,成本会...

    SQL的基本教程.txt

    掌握WHERE子句的用法,以便根据条件过滤查询结果。 学习使用ORDER BY子句对查询结果进行排序。 了解GROUP BY和HAVING子句的用法,用于对查询结果进行分组和过滤。 三、数据操作 学习如何使用INSERT INTO语句向...

    T-SQL高级查询

    --having 分组过滤条件 按照年龄分组,过滤年龄为空的数据,并且统计分组的条数和现实年龄信息 select count(*), age from student group by age having age is not null; 按照年龄和cid组合分组,过滤条件是cid...

    Oracle 查询优化的基本准则详解

    以提高查询速度3:使用 where 而不是 having ,where是用于过滤行的,而having是用来过滤组的,因为行被分组后,having 才能过滤组,所以尽量用户 WHERE 过滤4:使用 exists 而不用 IN 因为 Exists 只检查行的存在,...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。 having 子句被限制子已经在SELECT语句中定义的列和聚合...

    Oracle数据库Sql语句详解大全

    使用HAVING子句对分组后的数据进行过滤 第六章 子查询 第七章 数据建模及数据库设计 了解系统开发的步骤 数据关系的定义 理解实体关系映射图(E-R图) 第八章 创建表 掌握创建表的语法 Oracle的数据类型 使用约束...

    数据库开发规范(Oracle)

    1. SQL书写规范: (规范书写相关SQL语句:SELECT、...WHERE <过滤条件列表> GROUP BY <分组列表> HAVING <条件表达式> ORDER BY <排序列表> <连接词> SELECT <查询列表> FROM <查找表列表> WHERE <过滤条件列表> •

    数据库MySQL基础知识点3

    where条件之比较运算、逻辑运算 模糊查询(like) % 表示任意多个字符 _ 表示一个任意字符 范围查询(between and 、in) in 非连续的范围查询 between 起始 and 终值 连续范围的查询(包括起始和终值) 控制...

    oracle的sql优化

     对于Where条件的顺序,过滤到最大查询记录数量的条件必须写在Where条件的结尾处。  Where条件中涉及到使用复杂函数判定的必须注意要写到Where条件的最前面 3.索引方面  记录数少的表保留有主键索引就可以了,...

    python-mysql day04.txt

    2、where只能操作表中字段,having过滤由聚合函数生成的显示列 3、distinct 1、distinct和from之间所有的字段全部相同才会去重 2、select count(distinct name) from sanguo; 2、索引(BTREE) 1、优点 :加快数据...

    2009达内SQL学习笔记

    NOT 与 IN 在一起使用时,NOT 是找出与条件列表不匹配的行。 IN 列表里有 NULL 时不处理,不影响结果;用 NOT IN 时,有 NULL 则出错,必须排除空值再运算。 in :选择列表的条件 使用IN操作符的优点: 在长的...

    MySQL单表查询操作实例详解【语法、约束、分组、聚合、过滤、排序等】

     WHERE 条件  GROUP BY field  HAVING 筛选  ORDER BY field  LIMIT 限制条数 二、关键字的执行优先级(重点) 重点中的重点:关键字的执行优先级 from where group by having select disti

    sql语句大全(详细).pdf

    数据定义语言 (DDL) CREATE TABLE:创建表 ALTER TABLE:修改表结构 ...HAVING:对分组结果进行过滤 DISTINCT:返回唯一值 数据控制语言 (DCL) GRANT:授予权限 REVOKE:撤销权限 其他常用语句-详情见文档

Global site tag (gtag.js) - Google Analytics