2018-06-27 第五十二天 oracle

简介: 一、相关子查询 --1:查询本部门的最高工资的员工的信息 --查询10部门的最高工资的员工的信息 --10部门的最高工资 select max(sal) from emp where deptno=10 select * from emp where deptno=10 and sal=(sele.

一、相关子查询

--1:查询本部门的最高工资的员工的信息

--查询10部门的最高工资的员工的信息

--10部门的最高工资

select max(sal) from emp where deptno=10

select * from emp where deptno=10 and sal=(select max(sal) from emp where deptno=10)

select * from emp where deptno=20 and sal=(select max(sal) from emp where deptno=20)

select * from emp where deptno=30 and sal=(select max(sal) from emp where deptno=30)

select * from emp where deptno=40 and sal=(select max(sal) from emp where deptno=40)

 

select * from emp e where  sal=(select max(sal) from emp where deptno=e.deptno)

 

--2:查询工资高于其所在部门的平均工资的员工的信息

--查询工资高于10部门的平均工资的10部门员工的信息

--10部门的平均工资

select avg(sal) from emp where deptno=10

select * from emp where deptno=10 and sal > (select avg(sal) from emp where deptno=10)--1

select * from emp where deptno=20 and sal > (select avg(sal) from emp where deptno=20)--3

select * from emp where deptno=30 and sal > (select avg(sal) from emp where deptno=30)--2

select * from emp where deptno=40 and sal > (select avg(sal) from emp where deptno=40)--0

 

select e.*,(select avg(sal) from emp where deptno = e.deptno)平均工资

from emp e

where sal>(select avg(sal) from emp where deptno = e.deptno)

 

--3:查询本部门的最高工资的员工的信息

-- 使用不相关的子查询实现

--把所有部门的最高的工资求出

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

select deptno,sal from emp

 

select * from emp where (deptno,sal) in (select deptno,max(sal) from emp group by deptno)

 

二、练习

-- 1 、列出所有员工的年工资,按年薪从低到高排序。

select ename, sal*12+nvl(comm,0)*12 year_sal from emp order by year_sal

 

-- 2 、列出薪金比 SMITH 多的所有员工。

select * from emp where sal>(select sal from emp where ename='SMITH')

 

-- 3 、列出所有员工的姓名及其直接上级的姓名。 sql92 , sql99

--sql92

select e1.ename,e2.ename

from emp e1, emp e2

where e1.mgr= e2.empno

--sql99

select e1.ename,e2.ename

from emp e1 join emp e2

on e1.mgr= e2.empno

 

-- 4 、列出受雇日期早于其直接上级的所有员工。

--sql99

select e1.*

from emp e1 join emp e2

on e1.mgr=e2.empno

where e1.hiredate < e2.hiredate

 

-- 5 、列出部门名称和这些部门的员工信息,包括那些没有员工的部门。

select d.dname,e.*

from emp e right join dept d

on e.deptno=d.deptno

 

-- 6 、列出所有job  CLERK (办事员)的姓名及其部门名称。

select e.ename,d.dname

from emp e join dept d

Using(deptno)

where e.job='CLERK'

 

-- 7 、列出最低薪金大于1500 的各种工作。

select job, min(sal)

from emp

group by job

having min(sal) > 1500

 

-- 8 、列出在部门 SALES (销售部)工作的员工的姓名,假定不知道销售部的部门编号。 

select e.deptno,e.ename

from emp e join dept d

on e.deptno=d.deptno

where d.dname='SALES'

 

-- 9 、列出薪金高于公司平均薪金的所有员工。

select * from emp where sal > (select avg(sal) from emp)

 

-- 10 、列出与 SCOTT 从事相同工作的所有员工。

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

 

-- 11 、列出薪金高于在部门 30 工作的所有员工的薪金的员工姓名和薪金。

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

 

-- 12 、列出在每个部门工作的员工数量、平均工资和平均服务期限(年)。

select deptno, count(*), avg(sal) , avg(to_char(sysdate,'YYYY')-to_char(hiredate,'YYYY')) 平均服务年限

from emp

group by deptno

 

-- 13 、列出所有员工的姓名、部门名称和工资。

select e.ename,d.dname,e.sal

from emp e natural join dept d

 

-- 14 、列出从事同一种工作但属于不同部门的员工的一种组合。

select e1.ename,e1.job ,e1.deptno,e2.ename,e2.job,e2.deptno

from emp e1 join emp e2

on e1.job=e2.job and e1.deptno<>e2.deptno and e1.ename >e2.ename

 

-- 15 、列出所有部门的详细信息和部门人数。

select d.*, count(*)

from emp e join dept d

on e.deptno=d.deptno

group by d.deptno,d.dname,d.loc

 

select d.*,count(e.ename) from dept d left join emp e

on d.deptno = e.deptno 

group by d.deptno,d.dname,d.loc

 

-- 16 、列出各种工作的最低工资。

select job,min(sal)

from emp

group by job

 

-- 17 、列出各个部门的 MANAGER (经理)的最低薪金。

select deptno,min(sal)

from emp

where job='MANAGER'

group by deptno

 

-- 18 、列出至少有一个员工的所有部门。

select d.*,count(*)

from emp e join dept d

on e.deptno=d.deptno

group by d.deptno,d.dname,d.loc

having count(*)>0

 

-- 19 、人数最多部门的信息

--1

select *

from dept d

where deptno = (select deptno

from (select deptno,count(deptno) count_dept from emp group by deptno) 

where count_dept = (select max(count_dept) from (select deptno,count(deptno) count_dept from empgroup by deptno)))

 

--2

select *

from dept d

where deptno = (select deptno from emp group by deptno having (count(*) >= 

all(select count(deptno) from emp group by deptno)))

 


目录
相关文章
|
SQL 关系型数据库 MySQL
Hive跨集群和版本迁移
Hive跨集群和版本迁移
|
Windows
Adobe2023全套全网最新稳定版安装包下载
下文软件均为windows系统软件,其中2018版适合windows7/8/10/11系统,2021、2020、2023版适合windows10/11系统。MAC均有!Adobe大法更新到2023版 无论是专业人士还是业余爱好 都毫不犹豫相继尝鲜看看自己竟然还停留在17版 着实感觉到羞愧!
1164 0
|
缓存 前端开发 Java
SpringBoot&SpringMVC统一异常处理之RestControllerAdvice
SpringBoot&SpringMVC统一异常处理之RestControllerAdvice
316 0
|
8月前
|
消息中间件 大数据 关系型数据库
RocketMQ实战—3.基于RocketMQ升级订单系统架构
本文主要介绍了基于MQ实现订单系统核心流程的异步化改造、基于MQ实现订单系统和第三方系统的解耦、基于MQ实现将订单数据同步给大数据团队、秒杀系统的技术难点以及秒杀商详页的架构设计和基于MQ实现秒杀系统的异步化架构。
621 64
RocketMQ实战—3.基于RocketMQ升级订单系统架构
|
9月前
|
Python Windows
[oeasy]python076_int这个词怎么来的_[词根溯源]整数类型_int_integer_touch
本文探讨了“int”一词的起源及其与整数类型的关联。通过词根溯源,揭示“int”来源于“integer”,意为“完整的数”,与零碎的分数相对。同时分析了相关词汇如“tact”(接触)、“touch”(触摸)及衍生词,如“tangential”(切线的)、“intagible”(无形的)和“integral”(完整的、不可或缺的)。文章还结合编程语言特性,解释了Python作为动态类型、强类型语言的特点,并总结了整型变量的概念与意义。最后预告了后续内容,提供了学习资源链接。
363 11
|
SQL 存储 关系型数据库
如何查看数据库中的表及其在SQL中的实现
引言:在数据库管理和数据分析的过程中,我们经常需要查看数据库中的表以获取相关信息。表是数据库中存储数据的主要结构,通过查看这些表,我们可以了解数据库的结构和内容。本文将详细介绍如何使用SQL查询来查看数据库中的表,包括各种相关操作和命令的使用。一、了解数据库和表的基本概念在讨论如何查看数据库中的表之
678 2
|
域名解析 存储 缓存
DNS是什么?内网电脑需要配置吗?
【10月更文挑战第22天】DNS是什么?内网电脑需要配置吗?
2091 1
|
机器学习/深度学习 存储 算法
卷积神经网络(CNN)的数学原理解析
卷积神经网络(CNN)的数学原理解析
409 2
卷积神经网络(CNN)的数学原理解析
|
安全 JavaScript 前端开发
JavaScript 中的模板字面量与标签模板
在 JavaScript 中,模板字面量(Template Literals)和标签模板(Tagged Templates)是两种用于处理字符串的特殊方式。它们分别提供了更灵活和强大的字符串处理能力,让字符串拼接、格式化和转义变得更加方便。
466 0
|
算法 计算机视觉 网络架构
CVPR 202:擅长处理复杂场景和语言表达,清华&博世提出全新实例分割网络架构MagNet
【5月更文挑战第10天】在CVPR 2024会议上,清华大学与博世团队推出MagNet,一种针对复杂场景和语言表达的实例分割网络。MagNet通过Mask Grounding辅助任务强化视觉-语言对应,缩小模态差距,并结合跨模态对齐损失与模块,提升RIS任务的准确性。在RefCOCO、RefCOCO+和G-Ref基准上取得显著优势,但对罕见表达和复杂场景的处理仍有待优化。[论文链接](https://arxiv.org/abs/2312.12198)
387 5