`

SQL 中having 和where的区别

 
阅读更多
group by

 

    在select 语句中可以使用group by 子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。

   在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数


   select max(sal),job emp group by job;
   (注意max(sal), job 的job并非一定要出现,但有意义 )

   查询语句的select 和group by ,having 子句是聚组函数唯一出现的地方,在where 子句中不能使用聚组函数。

  select deptno,sum(sal) from emp where sal>1200 group by deptno having sum(sal)>8500 order by deptno;

当在gropu by 子句中使用having 子句时,查询结果中只返回满足having条件的组。在一个sql语句中可以有where子句和having子句。having 与where 子句类似,均用于设置限定条件

  where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。
  having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组,也可以使用多个分组标准进行分组。

查询每个部门的每种职位的雇员数
  select deptno,job,count(*) from emp group by deptno,job;




  如果你对何时应该使用WHERE,何时使用HAVING仍旧很迷惑,请遵照下面的说明:  

  WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。  

  HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。

分享到:
评论

相关推荐

    sql中where和having 区别

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

    where和having区别

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

    SQL_HAVING_使用详解

    为了编写高效的 SQL 查询,了解 `WHERE`、`GROUP BY` 和 `HAVING` 子句的正确使用顺序至关重要: 1. **WHERE 子句**:用于筛选原始数据,尽可能地在分组之前减少数据量。 2. **GROUP BY 子句**:用于基于指定列对...

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

    在SQL查询中,`WHERE` 和 `HAVING` 都是用来过滤数据的子句,但它们的应用场景和功能有所不同。首先,我们需要了解`WHERE`子句的基本用法。`WHERE`子句用于在数据检索之前对原始记录进行筛选,它不支持聚合函数,即...

    SQL中Having与Where的区别

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

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

    通过以上详细的介绍,我们可以看到`WHERE`与`HAVING`子句在SQL查询中的不同作用以及在ThinkPHP框架中如何利用`create()`等方法有效地管理数据的创建和验证过程。这对于提高应用程序的数据安全性和性能有着至关重要的...

    sql/having用法

    SQL中的HAVING子句用法 HAVING子句是SQL中的一种子句,用于对 GROUP BY 子句所确定的行组进行控制。HAVING 子句条件中只允许涉及常量、聚组函数或 GROUP BY 子句中的列。在 Oracle 中,HAVING 子句是对 GROUP BY ...

    where和having的区别

    ### Oracle SQL 中 WHERE 和 HAVING 的区别 在数据库查询语言SQL中,`WHERE`和`HAVING`子句都是用于过滤数据的关键字,但它们的应用场景和语法结构有着明显的不同。下面将详细介绍这两个关键字的区别。 #### 1. ...

    SQL中Having与Where的区别及注意

    在SQL查询中,`WHERE` 和 `HAVING` 子句都是用来过滤数据的重要工具,但它们在使用场景和功能上有所不同。理解这两者之间的差异对于编写高效的SQL语句至关重要。 首先,`WHERE` 子句是SQL中最基础的过滤条件,它...

    SQL 中having 和where的区别分析

    在SQL查询中,`WHERE`和`HAVING`子句都是用来过滤数据的,但它们在功能和使用场景上有着显著的区别。理解这两者之间的差异对于编写高效的SQL语句至关重要。 首先,`WHERE`子句主要用于在数据进行任何处理(如分组、...

    T-SQL中where子句与having子句的对比分析.pdf

    在 SELECT 语句中,WHERE 子句和 HAVING 子句都是用来对数据进行筛选的,但是它们之间存在着一些区别和联系。 首先,让我们看一下 SELECT 语句的基本格式: SELECT 表达式 列表 FROM 基本表或视图名称 WHERE 查询...

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

    总结来说,`WHERE`子句和`HAVING`子句在SQL查询中的主要区别在于: 1. `WHERE`作用于数据分组前,适用于单行数据的筛选。 2. `HAVING`作用于数据分组后,适用于对分组后的数据进行筛选。 3. `WHERE`不支持聚合函数,...

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

    在SQL查询中,`WHERE`、`GROUP BY`和`HAVING`子句都是用于数据筛选和分组的重要部分,但它们各自承担不同的任务。理解它们的用法对于编写有效的SQL查询至关重要。 首先,`WHERE`子句是SQL查询中最基本的过滤条件,...

    having语句的用法

    在SQL查询中,`HAVING`子句是用来在分组后的数据上设置过滤条件的,而`WHERE`子句则是在数据分组之前对原始数据进行筛选。这两者虽然都是用于限定查询结果,但作用的对象和时机不同。 首先,`WHERE`子句是SQL查询的...

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

    本文将深入探讨SQL中的WHERE子句和HAVING子句,这两种子句在查询语句中扮演着重要角色。 WHERE子句是SQL查询语句的基础部分,用于在检索数据时设定条件。它在SELECT语句中使用,对查询结果进行筛选,只返回满足特定...

    sql where 和 having的区别

    “Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”; “Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回...

    SQL问题详解之_having_Group by

    在SQL查询中,GROUP BY和HAVING子句是数据分析和聚合操作的核心部分,它们帮助我们对数据进行分组和过滤,以获得更有意义的结果。在深入理解这两个子句之前,我们首先需要了解聚合函数,如SUM、COUNT、MAX和AVG等。 ...

    SQL 语法 SQL 总结 SQL教程

    SQL where SQL AND & OR SQL Order By SQL insert SQL update SQL delete SQL 高级 SQL Top SQL Like SQL 通配符 SQL In SQL Between SQL Aliases SQL Join SQL Inner Join SQL Left Join SQL Right ...

Global site tag (gtag.js) - Google Analytics