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

Oracle表查询(分组查询,多表查询,子查询,集合查询等)

阅读更多

--Oracle表查询(分组查询,多表查询,子查询,集合操作等)

 

--分组函数(max, min, avg, sum, count)

--1. 查询所有员工最高和最低工资

select max(sal) 最高工资, min(sal) 最低工资 from emp;

 

--2. 利用子查询查询最高工资的人是谁

select ename,sal from emp where sal = (select max(sal) from emp);

 

--3. group by(用于对查询的结果分组统计) 查询每个部门的平均工资和最高工资

select avg(sal), max(sal), deptno from emp group by deptno;

 

--4. having(用于限制分组显示结果)

select avg(sal), max(sal), deptno from emp group by deptno having avg(sal) < 2000;

 

--5. 多表查询

 

--a. 查询名字,工资及所在部门的名字

select e.ename, e.sal, d.dname from emp e, dept d where e.deptno = d.deptno;

 

--b. 查询员工的行吗,工资及工资级别

select e.ename, e.sal, s.grade from emp e, salgrade s where e.sal between s.losal and s.hisal;

 

--自连接 显示员工FORD上级

select worker.ename, boss.ename from emp worker, emp boss

where worker.mgr = boss.empno and worker.ename = 'FORD';

 

--多行子查询中使用all操作符

select ename, sal, deptno from emp

where sal > all(select sal from emp where deptno = 30);

--等价于:

select ename, sal, deptno from emp where sal >

(select max(sal) from emp where deptno = 30);

 

--多行子查询中使用any操作符

select ename, sal, deptno from emp

where sal > any(select sal from emp where deptno = 30);

--等价于

select ename, sal, deptno from emp where sal >

(select min(sal) from emp where deptno = 30);

 

--多列子查询

select deptno, ename, job from emp

where (deptno, job) = (select deptno, job from emp where ename = 'SMITH');

 

--from子句中使用子查询 如何显示高于自己部门平均工资的员工信息

select e.ename, e.deptno, e.sal, ds.avgsal from emp e,

    (select deptno, avg(sal) avgsal from emp group by deptno) ds

where e.deptno = ds.deptno and e.sal > ds.avgsal;

 

--用查询结果创建新表

create table mytable(id, name, sal, job, deptno) as

(select empno, ename, sal, job, deptno from emp);

 

--合并查询 union取得两个结果的并集,自动去掉重复行,union all则不去除重复行

select ename, sal, job from emp where sal > 2500

union

select ename, sal, job from emp where job = 'MANAGER';

 

select ename, sal, job from emp where sal > 2500

union all

select ename, sal, job from emp where job = 'MANAGER';

 

--取交集 intersect

select ename, sal, job from emp where sal > 2500

intersect

select ename, sal, job from emp where job = 'MANAGER';

 

--取差集 minus

select ename, sal, job from emp where sal > 2500

minus

 

select ename, sal, job from emp where job = 'MANAGER';

分享到:
评论

相关推荐

    SQL之分组统计和子查询专题

    李兴华老师的ORACLE数据库课程中,对分组统计和子查询进行了深入详解。本课程涵盖了分组统计的重点和难点、子查询的概念和应用场景,以及在实际开发中需要注意的细节。 分组统计 在SQL中,分组统计是对数据进行...

    oracle子查询相关帮助

    - 分解复合子查询:大型子查询可以分解成多个小的子查询,分别处理,然后组合结果。 6. **案例分析**: - 查找销售最高和最低的产品:通过子查询找出销售额最高的产品ID,再在外层查询中找出该ID对应的产品详情。...

    ORACLE-select-query.rar_oracle_多表查询

    本压缩包“ORACLE-select-query.rar”专注于讲解Oracle数据库中的查询技术,特别是多表查询、子查询以及高级子查询。下面将详细探讨这些关键知识点。 首先,基础查询SQL语句是所有数据库操作的基础,它涵盖了SELECT...

    Oracle数据库应用教程--子查询与高级查询.pptx

    当子查询的返回值是一个集合而不是一个值时,不能使用单行操作符,而必须根据需要使用ANY、IN、ALL或EXISTS等操作符。 在WHERE子句中使用子查询时,需要注意不能使用ORDER BY子句。在HAVING子句中使用子查询时,...

    oracle子查询PPT学习教案.pptx

    另一方面,多行子查询则与集合操作符一起使用,如IN、ANY、ALL等。在使用子查询时,如果子查询返回多行而主查询期望单行结果,就会导致错误,如"single-row subquery returns more than one row"。 另外,子查询也...

    Oracle基础使用子查询PPT学习教案.pptx

    子查询的类型多种多样,根据返回的结果集不同,可以分为单行子查询(返回一行一列或一行多列)、多行子查询(返回多行一列)以及集合子查询(返回多行多列)。在HAVING子句中,子查询通常用于与聚合函数结合,过滤...

    oracle 复杂查询语句的使用

    除了子查询和外连接,Oracle还提供了其他高级查询技术,如联接(JOIN)、集合操作(UNION, INTERSECT, EXCEPT)、分组和聚合函数(GROUP BY, HAVING)、窗口函数(OVER())以及带有条件的聚合(FILTER)。...

    MLDN魔乐科技_Oracle课堂11_子查询

    - **连接(JOIN)**:适合处理两个或更多表之间的关系,效率通常高于子查询,但结构较复杂。 在"MLDN魔乐科技JAVA培训_Oracle课堂11_子查询.wmv"这个视频课程中,你可能会学习到如何编写和理解各种类型的子查询,...

    oracle-plsql.zip_oracle_pl sql 分组查询_plsql_plsql 分组查询

    4. **子查询**:子查询是嵌套在其他查询中的查询,可以作为值、条件或表达式的一部分,用于筛选或计算数据。 5. **高级查询**:包括使用集合操作(UNION、INTERSECT、EXCEPT)和窗口函数(ROW_NUMBER、RANK、DENSE_...

    oracle高级查询技巧

    子查询是嵌套在其他SQL语句中的查询,用于获取主查询所需的值。它可以作为SELECT、FROM或WHERE子句的一部分。例如,你可以使用子查询来找到某个部门薪水最高的员工,然后再找出这个员工的所有信息。 二、连接查询 ...

    oracle经典sql多表查询,sql统计

    以上只是Oracle SQL多表查询和统计功能的一部分,实际使用中还有更多的复杂查询和统计技巧,例如子查询、窗口函数、集合操作等。通过持续学习和实践,你可以掌握这些技能,提高在Oracle数据库中的数据处理能力。

    MLDN魔乐科技JAVA培训_Oracle课堂11_子查询.rar

    - **分组子查询**:在GROUP BY和HAVING子句中使用,用于对子查询结果集进行分组和过滤。 2. **子查询的应用场景**: - **筛选条件**:在WHERE子句中使用子查询,根据子查询的结果筛选出满足条件的记录。 - **...

    子查询课程实验

    - 在Oracle等数据库系统中,可以使用窗口函数(如ROW_NUMBER(), RANK(), DENSE_RANK()等)在子查询中进行分析操作,提供排序和分组后的聚合计算。 8. 优化子查询性能: - 使用索引来提高子查询的执行效率。 - ...

    oracle常用经典sql查询

    - 子查询可以嵌套在`SELECT`, `FROM`, `WHERE`等子句中,作为更复杂查询的一部分。 - 例如:`SELECT * FROM table_name WHERE column IN (SELECT column FROM another_table);` 7. **聚合函数** - `COUNT()`, `...

    Oracle查询语句集锦

    本资源集锦涵盖了日期查询、嵌套查询和多表查询等多个方面,对于学习和提升Oracle SQL技能大有裨益。 1. **日期查询**:在Oracle中,日期类型数据的处理是非常常见的。你可以使用内置的日期函数如`SYSDATE`获取当前...

    oracle常用查询语句示例

    如果需要使用子查询,可以在`SELECT`, `FROM`或`WHERE`子句中嵌套查询。例如,找出某个表中不存在于另一个表的数据: ```sql SELECT column1 FROM table1 WHERE column1 NOT IN (SELECT column1 FROM table2); ``` ...

    oracle对表的高级查询题

    1. **子查询**:在主查询中嵌套一个或多个查询,用于获取满足特定条件的数据。例如,找出"scott"用户中薪水高于部门平均薪水的员工。 ```sql SELECT * FROM scott.employees WHERE salary &gt; (SELECT AVG(salary) ...

Global site tag (gtag.js) - Google Analytics