1.问题:查询每个员工的部门名称,列出员工姓名和部门名称

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

2. 问题:查询员工表中,每个员工的工资等级,列出员工姓名,工资和工资等级

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

3. 查询所有比自己领导入职早的员工的姓名和上级领导的姓名

select w.ename as 员工姓名,m.ename as 上级领导姓名
from emp w,emp m where w.mgr=m.empno and w.hiredate<m.hiredate;

4.问题:查询每个员工的部门名称,列出员工姓名和部门名称

select e.ename,d.dname from emp e inner join dept d on e.deptno=d.deptno;

5.问题:查询部门10中每个员工的工资等级

select e.ename,s.grade from emp e
inner join salgrade s
on e.sal between s.losal and s.hisal --连接条件
where e.deptno=10; --查询条件

6.问题:查询emp表中部门名称为ACCOUNTING的员工的姓名,和部门位置

1
select e.ename,d.loc from emp e,dept d
where e.deptno=d.deptno and d.dname='ACCOUNTING';
2
select e.ename,d.loc from emp e inner join dept d
on e.deptno=d.deptno
where d.dname='ACCOUNTING';
3
select e.empno,e.ename from emp e
where deptno=(select deptno from dept where dept.dname = 'ACCOUNTING')
order by ename ;

7.查询高于自己部门平均工资的员工的信息,列出部门平均工资

--(1)获得每个部门的平均工资
select deptno,avg(sal) avg_sal from emp group by deptno; --x
--(2) 将x表和emp表做表连接
select e.*,x.* from emp e,x where e.deptno=x.deptno and e.sal>x.avg_sal;
--(3)替换x
select e.*,x.* from
emp e,(select deptno,avg(sal) avg_sal from emp group by deptno)x
where e.deptno=x.deptno and e.sal>x.avg_sal;

8.问题:查询没有没有员工的部门信息

select d.* from dept d left join emp e on e.deptno=d.deptno where e.empno is null;

9. 问题:查询和scott工作相同的员工姓名,不包含scott在内

select emp.ename
from emp
where job= (select job from emp where ename='SCOTT') and ename <> 'SCOTT'

10.查询blake的上级领导的姓名和工资

select ename ,sal
from emp
where empno =(select mgr from emp where ename='BLAKE' )

11. 查询薪水高于部门30的最低薪水的员工信息

select *
from emp
where sal < (select min(sal) from emp where deptno=30)

12.查询哪些部门最低薪水高于部门30的最低薪水,列出这些部门薪水最低的员工信息

--(1)查询哪些部门最低薪水高于部门30的最低薪水  --x
select deptno,min(sal) from emp
group by deptno
having min(sal)>(select min(sal) from emp where deptno=30);
--(2)将emp表与x做表连接
select e.* from emp e inner join x on e.sal=x.min_sal;
--(3)替换:
select e.*,x.* from
(select deptno,min(sal) min_sal from emp
group by deptno
having min(sal)>(select min(sal) from emp where deptno=30))x
inner join emp e
on e.sal=x.min_sal;

13. 查询和SALESMAN同部门,但是不是SALESMAN的员工的信息

select * from emp where
deptno in (select distinct deptno from emp where job='SALESMAN')
and job<>'SALESMAN';

14.查询比任何一个SALESMAN的薪水高但不是SALESMAN的员工信息

select * from emp where sal>any(select sal from emp where job='SALESMAN') and job<>'SALESMAN';

-->any:大于最小的

--<any:小于最大的

15. 查询比所有一个SALESMAN的薪水高但不是SALESMAN的员工信息。

>all:大于最大的

<all:小于最小的

select * from emp where sal>all(select sal from emp where job='SALESMAN') and job<>'SALESMAN';
select * from emp where sal>(select max(sal) from emp where job='SALESMAN') and job<>'SALESMAN';

16.按照部门名称和工作,来查看emp表每个部门,每种职位每个月的总开支,并且按照总开支进行降序排列

--(1)表连接
select e.*,d.* from emp e,dept d where e.deptno=d.deptno;
--(2)分组求和排序
select d.dname,e.job,sum(sal) from emp e,dept d where e.deptno=d.deptno
group by d.dname,e.job
order by sum(sal) desc;

17. 查询和scott相同部门相同职位的员工

select * from emp
where (deptno,job) = (select deptno,job from emp where ename='SCOTT')

18. 查询每个部门下面工资最低的员工

select deptno,min(sal) from emp group by deptno;
select * from emp
where (deptno,sal) in (select deptno,min(sal) from emp group by deptno); select * from emp e1
where (deptno,sal)=(select deptno,min(sal) from emp e2 where e1.deptno=e2.deptno group by deptno);

19.列出emp表中,每个部门的员工人数和部门号

select deptno,count(*) from emp group by deptno;

20.列出emp表中,每个部门的员工人数和部门名称

select d.dname,count(*)
from emp e,dept d
where e.deptno=d.deptno
group by d.dname;

21.列出emp表中,部门人数大于3的员工人数和部门编号

select deptno,count(*)
from emp
group by deptno
having count(*)>3;

22.列出emp表中,部门人数大于3的员工人数和部门名称

1
select d.dname,count(*)
from dept d,emp e
where d.deptno=e.deptno
group by d.dname
having count(*)>3; 2
--(1)查询每个部门的员工人数 --x
select deptno,count(*) co from emp group by deptno having count(*)>3;
--(2)表连接
select d.dname,x.co from dept d,x where d.deptno=x.deptno;
--(3)替换
select d.dname,x.co
from dept d,(select deptno,count(*) co from emp group by deptno having count(*)>3)x
where d.deptno=x.deptno;

--exists(select...from...)

--如果select语句返回的结果集为空,exists(select...from...)结果是false

--如果select语句返回的结果集不为空,exists(select...from...)结果是true

23.查询有员工的部门的部门编号和部门名称

select deptno,dname from dept d where exists(select * from emp e where d.deptno=e.deptno);

24.显示职位是’MANAGER’且薪水大于2500的员工的信息

select * from emp where job='MANAGER'
intersect
select * from emp where sal>2500;

25 显示职位是MANAGER,但是薪水低于2500的员工的信息

select * from emp where job='MANAGER'
minus
select * from emp where sal>=2500;

oracle习题集-高级查询的更多相关文章

  1. oracle习题集-高级查询2

    1.列出员工表中每个部门的员工数和部门编号 Select deptno,count(*) from emp group by deptno; 2.列出员工表中,员工人数大于3的部门编号和员工人数 ; ...

  2. Oracle 函数高级查询

    目录 oracle高级查询 Oracle SQL获取每个分组中日期最新的一条数据 求平均值(为0的参数不均摊) 字符串清除前面的0 判断字符串串是否包含某个字符串 switch 判断 oracle不足 ...

  3. oracle的高级查询

    1.简单连接 基本连接语法:SELECT [ALL|DISTINCT]column_name[,expression…]FROM table1_name[,table2_name,view_name, ...

  4. Oracle数据库高级查询(五)集合查询

    现实需求有时候需要将多个查询组合到一个查询中去 这时就需要使用集合查询操作了 这个操作类似于数学中的交集,并集,和补集的操作   交集就是返回两个查询共有的记录,关键字是INTERSECT 并集是返回 ...

  5. oracle高级查询(实例基于scott用户四张表)

    oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ====================================================== ...

  6. Oracle学习笔记(7)——高级查询(1)

    在学习高级查询之前,我们先了解一下怎样查看Oracle数据库中的全部表.由于我们要使用到Oracle数据库中SCOTT用户下的几张表(这些表是Oracle数据库自带的表). 分组查询 分组函数的概念: ...

  7. oracle学习笔记(十二) 查询练习(二) 高级查询

    高级查询练习 /*--------------------------------------------- 分组查询 -------------------------------------*/ ...

  8. oracle学习笔记(十一) 高级查询

    高级查询 分组查询 select * from student [where ] [having ] --二次限定 [order by] --asc升序 desc降序 默认升序 查看EMPLOYEE表 ...

  9. [NewLife.XCode]高级查询(化繁为简、分页提升性能)

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...

随机推荐

  1. React中的Ajax

    React中的Ajax 组件的数据来源,通常是通过Ajax请求从服务器获取,可以使用componentDidMount方法设置Ajax请求,等到请求成功,再用this.setState方法重新渲染UI ...

  2. ios与android设备即时语音互通的录音格式预研说明

    本文虽属原创,但是内容都是来自于网络,参考了大家的微博,以及论坛的总结. 在做语音对讲的时候,将会碰到录制语音格式的问题,因为要考虑自己开发设备的支持的格式,还要考虑其他设备操作系统的支持的格式,以及 ...

  3. Hibernate 查询语言

    查询语言 Hibernate 查询语言(HQL)是一种面向对象的查询语言,类似于 SQL,但不是去对表和列进行操作,而是面向对象和它们的属性. HQL 查询被 Hibernate 翻译为传统的 SQL ...

  4. HTML给div设置百分比高度无效的解决方式 - 库塔姆斯 - CSDN博客

    原文:HTML给div设置百分比高度无效的解决方式 - 库塔姆斯 - CSDN博客 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/HobHunter ...

  5. java笔试之字符串反转

    写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串. package test; import java.util.Scanner; public class exam04 { public ...

  6. 牛客网暑期ACM多校训练营(第一场)菜鸟补题QAQ

    签到题 J Different Integers(树状数组) 题目大意:给一个长为n的数组,每一个询问给两个数字i, j ,询问1~i, j~n这两个区间中有多少不同的数字,真的像是莫队裸题,但是两个 ...

  7. 11.Hibernate一对多关系

    创建JavaBean 一方: Customer private long cust_id; private String cust_name; private long cust_user_id; p ...

  8. [转]Windows钩子

    Windows钩子 Windows应用程序的运行模式是基于消息驱动的,任何线程只要注册了窗口类就会有一个消息队列来接收用户的输入消息和系统消息.为了取得特定线程接收或发送的消息,就要 Windows提 ...

  9. 大数据处理也要安全--关于MaxCompute的安全科普

    [TOC] 1.企业大数据处理现状 当今社会数据收集手段不断丰富,行业数据大量积累,数据规模已增长到了传统软件行业无法承载的海量数据(百GB.TB乃至PB)级别.基于此,阿里云推出有了一套快速.完全托 ...

  10. 洛谷P3747 [六省联考2017]相逢是问候

    传送门 题解 扩展欧拉定理. 线段树维护,已经全改到底了的节点就不管,不然暴力修改下去. //Achen #include<algorithm> #include<iostream& ...