`
snowstone
  • 浏览: 19819 次
  • 性别: 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子句可以让我们筛选成组后的各组数据.
分享到:
评论

相关推荐

    精通HAVING子句:分组后条件过滤的SQL应用

    与WHERE子句在分组前对数据进行过滤不同,HAVING子句在分组后对分组的结果进行过滤。本文将详细介绍如何使用HAVING子句进行分组后的条件过滤,并探讨其在实际数据库开发中的应用。 在SQL中,GROUP BY子句用于将结果...

    where和having区别

    ### SQL中的WHERE与HAVING的区别 在SQL查询语句中,`WHERE`子句和`HAVING`子句都是用于过滤数据的,但它们的作用范围和使用场景有所不同。理解这两个子句之间的区别对于编写高效、准确的SQL查询非常重要。 #### ...

    sql中where和having 区别

    在SQL查询中,`WHERE`和`HAVING`子句都是用于过滤数据,但它们的应用场景和作用方式有所不同。理解这两个子句的区别对于编写高效的SQL语句至关重要。 首先,`WHERE`子句主要应用于筛选单个或多个字段满足特定条件的...

    where和having的区别

    通过以上分析可以看出,`WHERE`和`HAVING`子句虽然都用于过滤数据,但它们的作用范围、使用条件以及应用场景存在显著差异。正确理解并灵活运用这两个子句对于高效地进行数据查询至关重要。 通过以上的详细解释,...

    使用Having过滤分组数据.rar

    标题"使用Having过滤分组数据"和描述中的重复内容暗示我们将探讨如何利用`HAVING`子句筛选出满足特定条件的分组。 例如,假设我们有一个销售订单表,包含产品ID、销售日期和销售额等字段。如果我们想找出销售额总和...

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

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

    基于TP框架SQL之where与having区别

    ### 基于TP框架SQL之where与having区别的详细解析 #### 一、Where与Having的区别 在SQL查询语句中,`WHERE`和`HAVING`子句都用于过滤查询结果,但它们的应用场景有所不同。 - **WHERE子句**: - 作用:在对查询...

    详析SQL语言的WHERE子句与HAVING子句.pdf

    WHERE在数据被分组前进行过滤,而HAVING则在数据分组后对聚合结果进行过滤。WHERE适用于单行记录级别的筛选,而HAVING则适用于多行数据的汇总筛选。 SQL语言的非过程化特性使得它对用户友好,用户无需关注数据存储...

    SQL中Having与Where的区别及注意

    3. **过滤条件**:`WHERE` 过滤原始数据行,`HAVING` 过滤聚合后的数据组。 4. **联合使用**:`WHERE` 和 `HAVING` 可以在同一个查询中联合使用,`WHERE` 用于筛选原始数据,`HAVING` 用于筛选分组后的数据。 下面...

    having语句的用法

    总之,`HAVING`子句是SQL中用于处理分组数据过滤的关键工具,它与`WHERE`子句协同工作,共同帮助我们获取满足特定需求的数据集。在编写复杂的SQL查询时,正确理解和使用这两个子句是非常重要的。

    SQL中where子句与having子句的区别小结

    在SQL查询中,`WHERE`子句和`HAVING`子句都是用来过滤数据的,但它们的应用场景和功能有所不同。`WHERE`子句主要用于在数据分组之前筛选单个行,而`HAVING`子句则是在数据经过`GROUP BY`分组后对分组结果进行筛选。 ...

    SQL中Having与Where的区别

    在SQL查询中,`WHERE`和`HAVING`都是用于过滤数据的关键字,但它们的使用场景和功能有所不同。理解两者的区别对于编写高效的SQL语句至关重要。 首先,`WHERE`子句主要用于在数据被分组之前筛选记录。这意味着它在...

    SQL_HAVING_使用详解

    与 `WHERE` 子句不同,`HAVING` 子句在数据经过分组后才应用过滤条件。这意味着 `HAVING` 子句可以包含聚合函数(如 `SUM()`, `AVG()`, `COUNT()` 等),而 `WHERE` 子句则不能。 #### 二、HAVING 子句与 WHERE ...

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

    WHERE子句的作用是过滤数据,去除不满足条件的记录。例如,下面的查询语句: SELECT * FROM student WHERE score >= 60; 这个查询语句将返回所有成绩大于或等于60的学生记录。 二、GROUP BY子句的执行顺序 GROUP...

    oracle中where 子句和having子句中的区别介绍

    在Oracle数据库中,`WHERE`子句和`HAVING`子句都是用于限制查询结果的条件,但它们在使用场景和功能上有显著的区别。 首先,`WHERE`子句主要用于筛选单个行的数据,它不能与`GROUP BY`子句一起出现在查询的同一层次...

    on与where、group by的用法

    与`ON`条件不同的是,`WHERE`条件会过滤掉不符合条件的记录,无论这些记录是来自左表还是右表。这意味着`WHERE`条件不再遵循`LEFT JOIN`的规则,而是纯粹地作为过滤器来使用。 - **执行时机**:在连接操作完成之后...

    having的用法以及与where区别介绍

    在SQL查询中,`HAVING`和`WHERE`子句都是用来过滤数据的,但它们在功能和使用场景上有着显著的区别。`WHERE`子句主要用于在数据分组和聚合运算之前筛选行,而`HAVING`子句则在数据已经经过分组和聚合之后进行筛选。 ...

    elasticsearch聚合值过滤

    在 SQL 查询中,我们可以用 `HAVING` 子句来实现聚合后的过滤,类似于 SQL 中的 `WHERE` 子句,但 `HAVING` 是针对聚合结果的。 以下是一个示例,展示如何在 Elasticsearch 中实现聚合值过滤: ```sql GET my_...

    MySQL高级优化之-查询逻辑及where条件提取.pdf

    5. HAVING条件:HAVING用于在GROUP BY之后对分组数据进行过滤,与WHERE不同的是,它可以在聚合函数后使用。 6. DISTINCT:如果SELECT语句中包含了DISTINCT关键字,MySQL会在VT5中去除重复行。 7. SELECT列表:选择...

    having-mysql

    `HAVING`子句与`WHERE`子句相似,都用于过滤数据,但二者之间存在重要的区别: - **WHERE**子句在数据分组之前应用过滤条件,它作用于表中的行。 - **HAVING**子句则是在数据分组之后应用过滤条件,它作用于由`GROUP...

Global site tag (gtag.js) - Google Analytics