子查询和表连接

 ①.查询挣钱最多的人的名字

 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 --子查询和表连接的更多相关文章

  1. mysql update 子查询锁表问题

    mysql在Update带有子查询的时候,子查询的表会锁住,导致该表无法使用.比如 update A set comments = (select count(1) from B where id = ...

  2. ylb:SQL 表的高级查询-多表连接和子查询

    ylbtech-SQL Server: SQL Server-表的高级查询-多表连接和子查询 SQL Server 表的高级查询-多表连接和子查询. 1,ylb:表的高级查询-多表连接和子查询 返回顶 ...

  3. 肤浅的聊聊关联子查询,数据集连接,TiDB代码,关系代数,等等

    本章涉及的内容是TiDB的计算层代码,就是我们编译完 TiDB 后在bin目录下生成的 tidb-server 的可执行文件,它是用 go 实现的,里面对 TiPD 和 TiKV实现了Mock,可以单 ...

  4. MySQL 子查询(四)子查询的优化、将子查询重写为连接

    MySQL 5.7 ref ——13.2.10.10优化子查询 十.子查询的优化 开发正在进行中,因此从长远来看,没有什么优化建议是可靠的.以下列表提供了一些您可能想要使用的有趣技巧.See also ...

  5. MySQL 进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接

    #进阶6: 连接查询 (多表连接) : 等值连接/非等值连接 /左右全连接/内连接 /* 含义: 当查询的字段来自于多个表时, 就会用到连接查询 一: sql 92标准 :等值连接 ,(#内连接) 1 ...

  6. MySQL数据库(11)----使用子查询实现多表查询

    子查询指的是用括号括起来,并嵌入另一条语句里的那条 SELECT 语句.下面有一个示例,它实现的是找出与考试类别('T')相对应的所有考试事件行的 ID,然后利用它们来查找那些考试的成绩: SELEC ...

  7. 数据库基础(子查询练习、链接查询(join on 、union)及其练习)

    子查询练习一:查询销售部里的年龄大于35岁的人的所有信息 练习二:将haha表中部门的所有数字代码转换为bumen表中的字符串显示 练习三:将haha表中部门的所有数字代码转换为bumen表中的字符串 ...

  8. MySQL数据库update更新子查询

    比如: ? 1 2 3 4 UPDATE test.tb_vobile a set a.name = '111 ' WHERE a.id = (select max(id) id from test. ...

  9. SQL Server高级内容之子查询和表链接

    1.子查询概念 (1)就是在查询的where子句中的判断依据是另一个查询的结果,如此就构成了一个外部的查询和一个内部的查询,这个内部的查询就是自查询. (2)自查询的分类 1)独立子查询 ->独 ...

随机推荐

  1. Linux sort 排序 去重 统计

    先写一个命令: cut -d' ' -f1 ~/.bash_history|sort -d | uniq -c|sort -nr|head 这个命令可以统计你历史上输入的命令的次数的前十条 整个命令基 ...

  2. [CF115E]Linear Kingdom Races

    [CF115E]Linear Kingdom Races 题目大意: 有\(n(n\le10^5)\)个物品,编号为\(1\sim n\).选取第\(i\)个物品需要\(c_i\)的代价.另外有\(m ...

  3. bzoj 1026

    很久以前做过的一道数位DP,现在用一种新的解决数位DP的比较一般的方法. 数位DP裸题是:求[L,R]有多少个数. 先转化成求[0,R]有多少个数,然后区间相减即可. 对于[0,R]中的所有数,用0补 ...

  4. tarjan算法+缩点--cojs 908. 校园网

    cojs 908. 校园网 ★★   输入文件:schlnet.in   输出文件:schlnet.out   简单对比时间限制:1 s   内存限制:128 MB USACO/schlnet(译 b ...

  5. URAL 1997 Those are not the droids you're looking for 二分图最大匹配

    Those are not the droids you're looking for 题目连接: http://acm.timus.ru/problem.aspx?space=1&num=1 ...

  6. hdu 5211 Mutiple 数学

    Mutiple Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=5211 ...

  7. CentOS6永久修改主机名称

    1.修改network vi /etc/sysconfig/network 修改HOSTNAME值 2.修改hosts vi /etc/hosts 修改中间的那个localhost 3.使用hostn ...

  8. 为什么TCP连接需要三次握手分开需要四次握手?

    TCP的三次握手和四次断开TCP是一个面向连接的服务,面向连接的服务是电话系统服务模式的抽象,每一次完整的数据传输都必须经过建立连接,数据传输和终止连接3个过程,TCP建立连接的过程称为三次握手,下面 ...

  9. 用C++/CLI搭建C++和C#之间的桥梁(二)—— 基本语法

    托管对象的创建和引用 在前文中我们已经演示过创建一个托管对象,对于如下C#代码: System.Object x = new System.Object(); 其在C++/CLI中的等价代码如下: S ...

  10. 设计模式 - 命令模式(command pattern) 撤销(undo) 具体解释

    命令模式(command pattern) 撤销(undo) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 參考命令模式: http://blog.cs ...