`
顽石OK07
  • 浏览: 83919 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle select ---------having条件过滤与where条件过滤

阅读更多

HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似。WHERE 子句搜索条件在进行分组操作之前应用;而 HAVING 搜索条件在进行分组操作之后应用。HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数。HAVING 子句可以引用选择列表中出现的任意项。
SELECT 字段表
    FROM 表
    [WHERE选择准则]
    GROUP BY 分组字段表
    [HAVING分组准则]

说明
HAVING 是可选的。

HAVING 与 WHERE 类似,可用来决定选择哪个记录。在使用 GROUP BY对这些记录分组后,HAVING 会决定应显示的记录,不同的是where对分组前的结果集条件过滤,而having对分组后的结果集过滤;having何以跟聚合函数,而where则不能。

以下从建立实例来理解
------------------------------------------

--建立测试环境 

Create Table TEST 

(类别 Varchar(10), 

产品 Varchar(10), 

数量 Int) 



--插入数据 

Insert into TEST Values('A','A01',10); 

Insert into TEST Values('A','A02',13); 

Insert into TEST Values('A','A03',12); 

Insert into TEST Values('A','A05',15); 

Insert into TEST Values('A','A06',11); 

Insert into TEST Values('A','A06',12); 

Insert into TEST Values('B','B01',20); 

Insert into TEST Values('B','B02',10);

Insert into TEST Values('B','B03',17); 



--测试 

-----1,选择类别与产品都相同的记录 

select 类别,产品 from test a group by 类别,产品 having count(*)>1 

---返回结果 类别 产品 A A06 



-----2,选择所有记录数量大于15的记录 

select 类别,产品,数量 from test a group by 类别,产品,数量 having 数量> 15 

---返回结果类别 产品 数量 B B01 20 B B03 17 



------3,选择类别为A的记录中数量大于12的记录 

select 类别,产品,数量 from test a where 类别='A' group by 类别,产品,数量 having 数量> 12 

---返回结果类别 产品 数量 A A02 13 A A05 15 



------4,选择数量平均数大于13的记录 select 类别,产品,avg(数量) 平均数 from test a group by 类别,产品 having avg(数量)>13 

---返回结果类别 产品 平均数 A A05 15 B B01 20 B B03 17 



--删除测试环境 

Drop Table TEST 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    ORACLE-select-query.rar_oracle_多表查询

    WHERE则用来过滤满足特定条件的行。这些基本概念是所有复杂查询的基础。 接着,进入多表查询的领域。在实际业务中,数据往往分散在多个表中,因此需要通过JOIN操作来合并这些表的数据。Oracle支持多种JOIN类型,如...

    oracle-----oracle多表查询

    5. HAVING子句:用于过滤GROUP BY后的结果,与WHERE子句不同,HAVING可以用于聚合函数。 六、性能优化 在进行多表查询时,应考虑以下优化策略: - 创建合适的索引以加速JOIN操作。 - 避免全表扫描,尽可能使用索引...

    Oracle --PlSql教程

    - 子查询是在另一个查询中的查询,可以放在SELECT、FROM或WHERE子句中。 - **在子查询中使用汇总函数:** - 子查询可以使用SUM、COUNT等函数进行计算。 - **子查询的嵌套:** - 可以将一个子查询放在另一个子查询...

    Oracle--ROWNUM.rar_oracle

    这意味着`ROWNUM`不能与`HAVING`子句一起使用,因为它在聚合函数计算之后才被应用。如果需要在聚合之后进行筛选,应考虑使用`RANK()`、`DENSE_RANK()`或`ROW_NUMBER()`等行号函数。 此外,`ROWNUM`在联接查询中也有...

    oracle-SQL-note.rar_oracle

    在Oracle SQL中,DQL的基本查询涉及SELECT语句,你可以通过选择列、从表中选取数据、使用WHERE子句过滤结果、使用GROUP BY进行分组、使用HAVING进行条件过滤,以及使用ORDER BY进行排序。例如,以下查询语句将从...

    ORACLE-STUD-DATA.rar_stud

    更高级的查询可以涉及WHERE子句进行条件过滤,JOIN操作连接多表数据,GROUP BY和HAVING子句进行分组和聚合计算。 2. 数据操纵:INSERT语句用于向表中插入新记录,UPDATE用于修改现有记录,而DELETE则用于删除记录。...

    where和having的区别

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

    ORACLE-OCP-071考试题目和答案附带解析

    `WHERE`与`HAVING`子句都是用来过滤查询结果的,但它们的应用场景和语法略有不同。 **知识点:** 1. **WHERE子句**:通常用于在分组之前排除不符合条件的行。 2. **HAVING子句**:用于过滤聚合函数的结果或在分组后...

    ORACLE-Select语句执行顺序及如何提高Oracle基本查询效率.pdf

    在Select语句中,FROM子句是首先被处理的,然后是WHERE、GROUP BY、HAVING和ORDER BY子句。每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。 因此,在写Select语句时,我们应该注意FROM子句的书写...

    解决Oracle删除重复数据只留一条的方法详解

    查询及删除重复记录的SQL语句1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断select * from 表 where Id in (select Id from 表 group by Id having count(Id) > 1)2、删除表中多余的重复记录,...

    《Pro Oracle SQL》Chapter7 Advanced Grouping -- 7.2HAVING Clause

    因此,优化查询时需要考虑是否可以在`WHERE`中完成条件过滤,或者先通过子查询或连接操作来减少数据量。 5. **子查询和`HAVING`**:有时,`HAVING`可以与子查询结合使用,以比较当前分组的结果与其他查询结果,这在...

    Oracle数据库学习日记-实用性最强的Oracle学习总结.docx

    - **用途:** 连接或断开与Oracle数据库的连接。 - **语法示例:** - `sqlplus username/password` - `exit` (退出当前连接) **1.1.2 PL/SQL连接数据库配置,Oracle客户端的配置文件** - **用途:** 配置客户端...

    oracle-sql资料必备

    - SELECT语句:用于从表中检索数据,可以与WHERE子句配合过滤数据,与GROUP BY和HAVING子句进行分组聚合操作。 - INSERT语句:插入新记录到表中。 - UPDATE语句:修改现有记录。 - DELETE语句:删除表中的记录。...

    精髓Oralcle讲课笔记

    --------------------------------------------------having函数对于group by函数的过滤 不能用where-------------------------------------- 58、select deptno, avg(sal) from emp group by deptno having avg...

    Oracle公司内部数据库培训资料-SQL SELECT

    随着学习的深入,还将涉及更复杂的查询技术,如WHERE子句过滤数据,ORDER BY对结果排序,GROUP BY进行分组,以及HAVING条件过滤等。这些知识对于任何想要在Oracle数据库环境中工作的专业人员来说都是必不可少的。

    oracle-基础知识

    - **查询**:查询是SQL的核心功能,基本结构包括SELECT语句、FROM子句、WHERE子句等,用于从数据库中检索满足特定条件的数据。此外,还有GROUP BY用于分组,HAVING用于过滤分组后的数据,以及JOIN操作用于合并多...

    oracle-sql.rar_oracle

    2. WHERE子句:WHERE用来过滤满足特定条件的记录。例如,`SELECT * FROM table_name WHERE condition;` 只会返回满足condition的行。 3. ORDER BY子句:用于对查询结果进行排序。如 `SELECT * FROM table_name ...

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

    在Oracle数据库中,`WHERE`子句和`HAVING`子句都是用于限制查询结果的条件,但它们在SQL查询中的使用场景和功能有所差异。 首先,`WHERE`子句主要用于在`FROM`子句中指定的表或联接后的结果集上筛选行。它在查询...

    Oracle笔试题-参考答案.docx

    答案:FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY 解释:在SQL语句中,FROM子句用于指定数据来源,WHERE子句用于筛选数据,GROUP BY子句用于分组数据,HAVING子句用于对分组后的数据进行筛选,SELECT子句...

    oracle-高级查询

    Having 子句是用于过滤分组后的数据的条件语句。例如,计算每个部门的员工数,并只显示员工数大于 3 的部门,可以使用以下 SQL 语句: `Select deptno, count(*) from emp group by deptno having count(*) > 3;` ...

Global site tag (gtag.js) - Google Analytics