Orcla 数据库复习2 --子查询和表连接
子查询和表连接
①.查询挣钱最多的人的名字
SELECT ename,sal FROM emp
WHERE sal=(SELECT MAX(sal) FROM emp);
②.查询有哪些人的工资位于全部人的平均工资之上
SELECT ename,sal FROM emp
WHERE sal > (SELECT AVG(sal) FROM emp);
③.求部门中哪些人的薪水最高:
SELECT ename,sal FROM emp
JOIN (SELECT MAX(sal) max_sal,deptno FROM emp GROUP BY deptno) t
ON emp.sal =t.max_sal AND emp.deptno = t.deptno;
④.求出员工的名字和他的经理人姓名
SELECT e1.ename, e2.ename FROM
emp e1 JOIN emp e2
ON e1.mgr = e2.empno;
⑤.查询出每一个人的薪水等级
SELECT ename,grade FROM emp e JOIN salgrade s
ON (e.sal BETWEEN s.losal AND s.hisal);
⑥查询出每一个人的部门名称和薪水等级
SELECT ename,dname,grade FROM
emp e JOIN dept d ON (e.deptno =d.deptno)
JOIN salgrade s ON (e.sal BETWEEN s.losal AND s.hisal)
⑦(左外连接) 查询出雇员的名字和他经理人的名字
SELECT e1.ename, e2.ename FROM
emp e1 LEFT JOIN emp e2
ON e1.mgr = e2.empno;
⑧(右外连接) 查询出全部雇员的部门名称
SELECT ename ,dname FROM
emp e RIGHT JOIN dept d
ON e.deptno = d.deptno;
⑨(全外连接) 查询出全部雇员的部门名称
SELECT ename ,dname FROM
emp e FULL JOIN dept d
ON e.deptno = d.deptno;
⑩求部门平均薪水的等级
SELECT deptno,avg_sal,grade FROM
(SELECT deptno,AVG(sal) avg_sal FROM emp GROUP BY deptno) t
JOIN salgrade s
ON t.avg_sal BETWEEN s.losal AND s.hisal;
--求部门平均的薪水等级
SELECT deptno,AVG(grade) FROM
(SELECT deptno,ename,grade FROM emp JOIN salgrade s ON
emp.sal BETWEEN s.losal AND s.hisal) t
GROUP BY deptno;
--求雇员中哪些人是经理人
SELECT ename FROM emp
WHERE empno in(SELECT DISTINCT mgr FROM emp);
--不准用组函数,求薪水的最高值
SELECT sal FROM emp WHERE sal NOT IN
(SELECT DISTINCT e1.sal FROM emp e1 JOIN emp e2
ON e1.sal< e2.sal);
--平均薪水最高的部门的部门编号
SELECT deptno ,avg_sal FROM
( SELECT deptno, AVG(sal) avg_sal FROM emp GROUP BY deptno);
WHERE avg_sal =
(SELECT MAX(avg_sal) FROM
( SELECT deptno, AVG(sal) avg_sal FROM emp GROUP BY deptno));
--平均薪水最高的部门的部门名称
SELECT dname FROM dept WHERE deptno =
(SELECT deptno FROM
( SELECT deptno, AVG(sal) avg_sal FROM emp GROUP BY deptno)
WHERE avg_sal =
(SELECT MAX(avg_sal) FROM
( SELECT deptno, AVG(sal) avg_sal FROM emp GROUP BY deptno)
)
);
--求平均薪水的等级最低的部门的部门名称
SELECT dept.dname,t1.deptno,grade,avg_sal FROM
(
SELECT deptno,grade,avg_sal FROM
(SELECT AVG(sal) avg_sal, deptno FROM emp GROUP BY deptno) t JOIN salgrade s
ON t.avg_sal BETWEEN s.losal AND s.hisal
) t1
JOIN dept ON (t1.deptno = dept.deptno)
WHERE t1.grade =
(SELECT MIN(grade) FROM
(SELECT deptno,grade,avg_sal FROM
(SELECT AVG(sal) avg_sal, deptno FROM emp GROUP BY deptno) t JOIN salgrade s
ON t.avg_sal BETWEEN s.losal AND s.hisal))
--求部门经理人平均薪水最低的部门名称
--求比普通员工的最高薪水还要高的经理人名称
SELECT ename FROM emp WHERE
empno IN (SELECT DISTINCT mgr FROM emp WHERE mgr IS NOT NULL)
AND sal >
(SELECT max(sal) FROM emp WHERE empno NOT IN
(SELECT DISTINCT mgr FROM emp WHERE mgr IS NOT NULL))
--求薪水最高的前5名雇员
SELECT ename,sal
FROM (
SELECT ename,sal FROM emp ORDER BY sal DESC
)
WHERE ROWNUM <=5;
--求薪水最高的第6到第10名雇员
SELECT ename,sal FROM(
SELECT ename,sal, ROWNUM r FROM(
SELECT ename,sal FROM emp ORDER BY sal DESC)
)
WHERE r>=6 AND r<=10;
注:查询语句是自己看马士兵的视频敲出来的
Orcla 数据库复习2 --子查询和表连接的更多相关文章
- mysql update 子查询锁表问题
mysql在Update带有子查询的时候,子查询的表会锁住,导致该表无法使用.比如 update A set comments = (select count(1) from B where id = ...
- ylb:SQL 表的高级查询-多表连接和子查询
ylbtech-SQL Server: SQL Server-表的高级查询-多表连接和子查询 SQL Server 表的高级查询-多表连接和子查询. 1,ylb:表的高级查询-多表连接和子查询 返回顶 ...
- 肤浅的聊聊关联子查询,数据集连接,TiDB代码,关系代数,等等
本章涉及的内容是TiDB的计算层代码,就是我们编译完 TiDB 后在bin目录下生成的 tidb-server 的可执行文件,它是用 go 实现的,里面对 TiPD 和 TiKV实现了Mock,可以单 ...
- MySQL 子查询(四)子查询的优化、将子查询重写为连接
MySQL 5.7 ref ——13.2.10.10优化子查询 十.子查询的优化 开发正在进行中,因此从长远来看,没有什么优化建议是可靠的.以下列表提供了一些您可能想要使用的有趣技巧.See also ...
- MySQL 进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接
#进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接 /* 含义: 当查询的字段来自于多个表时, 就会用到连接查询 一: sql 92标准 :等值连接 ,(#内连接) 1 ...
- MySQL数据库(11)----使用子查询实现多表查询
子查询指的是用括号括起来,并嵌入另一条语句里的那条 SELECT 语句.下面有一个示例,它实现的是找出与考试类别('T')相对应的所有考试事件行的 ID,然后利用它们来查找那些考试的成绩: SELEC ...
- 数据库基础(子查询练习、链接查询(join on 、union)及其练习)
子查询练习一:查询销售部里的年龄大于35岁的人的所有信息 练习二:将haha表中部门的所有数字代码转换为bumen表中的字符串显示 练习三:将haha表中部门的所有数字代码转换为bumen表中的字符串 ...
- MySQL数据库update更新子查询
比如: ? 1 2 3 4 UPDATE test.tb_vobile a set a.name = '111 ' WHERE a.id = (select max(id) id from test. ...
- SQL Server高级内容之子查询和表链接
1.子查询概念 (1)就是在查询的where子句中的判断依据是另一个查询的结果,如此就构成了一个外部的查询和一个内部的查询,这个内部的查询就是自查询. (2)自查询的分类 1)独立子查询 ->独 ...
随机推荐
- [CodeForces-332E]Binary Key
题目大意: 给你两个字符串p和s,让你求出一个字典序尽量小的长度为k的01串密钥,能将p转化为s. 密钥的工作方式如下: 第i位是0,表示这一位无用: 第i位是1,表示这一位有用. 若密钥的长度比s短 ...
- [原]Redis详细配置介绍
Redis详细配置介绍 # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位, # 通常的格式就是 1k 5gb 4m 等酱紫: # # 1k => 1000 ...
- tortoise git常用功能
1.打tag TortoiseGit -> show log -> 选中版本 -> create tag at this version... TortoiseGit -> p ...
- “请不要直接访问超全局$_GET数组”
下载了一个名为NetBeans的IDE开发PHP程序,当我输入常用的的$name = $_GET['name'];时却收到警告:请不要直接访问超全局$_GET数组 请改用某些过滤函数(例如filter ...
- mysql 监控工具
zabbix和grafana是绝配. pmm的prometheus太占资源了
- 《转》OpenStack Ceilometer 安装配置和API说明
1.概述 Ceilometer是OpenStack中的一个子项目.它像一个漏斗一样.能把OpenStack内部发生的差点儿全部的事件都收集起来,然后为计费和监控以及其他服务提供数据支撑.Ceilome ...
- 调整设置 Win7休眠文件“Hiberfil.sys”
1. 显示并查看Hiberfil.sys文件
- java 日期工具类
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...
- js+Ajax,Get和Post在使用上的区别
get和post方法最大的不同在于: 1.get方法传值参数在url里面,而post参数放send里面 2.post方法必须加上 xmlHttp.setRequestHeader("Cont ...
- vim多行注释与取消
神操作 在vim中编写代码,常常会遇到多行注释和取消注释的情况,在VS中我们可以用默认的快捷键或者在设置中自定义快捷键来解决这个问题. vim既然这么强大,必然也是有快捷键来完成的.下面给出具体步骤: ...