-- 子查询

--单行子查询
-- 查询出所有比雇员姓名为“CLARK ”工资高的员工的信息
SELECT * FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME ='CLARK');

-- 查询工资高于平均工资的雇员名字和工资。
SELECT ENAME,SAL FROM EMP
WHERE SAL >(SELECT ROUND(AVG(SAL)) FROM EMP);

--查询和 SCOTT 同一部门且比他工资低的雇员名字和工资。
SELECT ENAME,SAL FROM EMP
WHERE DEPTNO = (SELECT DEPTNO FROM EMP WHERE ENAME = 'SCOTT')
AND SAL <(SELECT SAL FROM EMP WHERE ENAME = 'SCOTT');

-- 查询职务和 SCOTT 相同,比 SCOTT 雇佣时间早的雇员信息
SELECT * FROM EMP
WHERE JOB = (SELECT JOB FROM EMP WHERE ENAME = 'SCOTT')
AND HIREDATE <(SELECT HIREDATE FROM EMP WHERE ENAME = 'SCOTT');

-- 查询工资比 SCOTT 高或者雇佣时间比 SCOTT 早的雇员的编号和名字
SELECT EMPNO,ENAME FROM EMP
WHERE SAL >(SELECT SAL FROM EMP WHERE ENAME = 'SCOTT')
OR HIREDATE <(SELECT HIREDATE FROM EMP WHERE ENAME ='SCOTT');

--多行子查询
-->all() 表示匹配子查询结果所有值进行比较
-->=<any() 表示匹配子查询结果中的任意一个值
--in() 表示匹配子查询结果中的任意一个值
--当any()前添加=号 那么和in()相同的意思

-- 查询工资低于任何一个职务是“ CLERK ”的工资的雇员信息。
--1.获取工作为CLERK的员工工资
SELECT * FROM EMP WHERE SAL < ALL(SELECT SAL FROM EMP WHERE JOB = 'CLERK');

-- 查询工资比所有的“ SALESMAN ”都高的雇员的编号、名字和工资。
--1.获取SALESMAN的工资
--1)双击SQL行,F8执行
--2)按home键 shift+end 选中单行 F8执行
--1250 1600
SELECT EMPNO,ENAME,SAL FROM EMP WHERE SAL >ALL(SELECT SAL FROM EMP WHERE JOB ='SALESMAN');

-- 查询部门 20 中职务同部门 10 的雇员一样的雇员信息。
--1.获取10号部门员工的工种
SELECT * FROM EMP WHERE JOB =ANY(SELECT JOB FROM EMP WHERE DEPTNO = 10) AND DEPTNO = 20;

-- 查询在雇员中有哪些人是领导
--1.领导的雇员编号
SELECT * FROM EMP WHERE EMPNO IN(SELECT DISTINCT MGR FROM EMP WHERE MGR IS NOT NULL);

-- 找出部门编号为 20 的所有员工中收入最高的职员
--1.获取20号部门的所有员工最高工资
SELECT * FROM EMP WHERE SAL =(SELECT MAX(SAL) FROM EMP WHERE DEPTNO = 20) AND DEPTNO = 20;

-- 查询每个部门平均薪水的等级
-- 可以将子查询作为一张表格,实现多表关联查询
--SQL语句执行过程:from-->where -->group by --->having --->select --->order by

--SELECT ROUND(AVG(SAL)) AVG_SAL FROM EMP WHERE AVG_SAL=2073; --报错

--1.获取每个部门的平均薪水
SELECT T.DEPTNO,S.GRADE
FROM (SELECT DEPTNO,ROUND(AVG(SAL)) AVG_SAL FROM EMP GROUP BY DEPTNO) T,SALGRADE S
WHERE T.AVG_SAL BETWEEN S.LOSAL AND S.HISAL;

-- 查询部门的详细信息及部门平均工资和等级
--1.获取部门平均工资
SELECT D.*,T2.AVG_SAL,T2.GRADE
FROM DEPT D ,
(SELECT T.DEPTNO,S.GRADE,T.AVG_SAL
FROM (SELECT DEPTNO,ROUND(AVG(SAL)) AVG_SAL FROM EMP GROUP BY DEPTNO) T,SALGRADE S
WHERE T.AVG_SAL BETWEEN S.LOSAL AND S.HISAL) T2
WHERE D.DEPTNO = T2.DEPTNO(+);

初学SQL语句练习2的更多相关文章

  1. 初学SQL语句练习1

    --[1 ]查询出每个月倒数第三天受雇的所有员工SELECT * FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE)-2; --[2 ]找出早于30 年前受雇的员工S ...

  2. 【初学Java学习笔记】SQL语句调优

    1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认 ...

  3. Oracle行转列、列转行的Sql语句总结

    多行转字符串 这个比较简单,用||或concat函数可以实现  SQL Code  12    select concat(id,username) str from app_userselect i ...

  4. SQL语句之行操作

    SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 关系型数据库的存储形式 在关系型数据库中,数据都是以类似于Excel表格的形式存储 ...

  5. mysql学习之 sql语句的技巧及优化

    一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...

  6. 一条Sql语句分组排序并且限制显示的数据条数

    如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...

  7. LINQ to SQL语句(7)之Exists/In/Any/All/Contains

    适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...

  8. Oracle ------ SQLDeveloper中SQL语句格式化快捷键

    Oracle SQL Developer中SQL语句格式化快捷键: 每次sql复制到SQL Developer面板的时候,格式老不对,而且看起来很不舒服,所有的sql都挤在一行完成. 这时我们可以全选 ...

  9. SQL语句优化

    (1)      选择最有效率的表名顺序 ( 只在基于规则的优化器中有效 ) : ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名, FROM 子句中写在最后的表 ( 基础表dri ...

随机推荐

  1. Django_cookie+session

    一.cookie和session介绍 cookie 由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁 ...

  2. to_char

    to_date(to_char(to_date(#{conds.currentTime,jdbcType=VARCHAR},'YYYY-MM-DD hh24:mi:ss'),'hh24:mi:ss') ...

  3. LeetCode 461. Hamming Distance (C++)

    题目: The Hamming distance between two integers is the number of positions at which the corresponding ...

  4. 团队作业 week9

    1. Bug bash 我们现在在TFS服务器中有17个BUG等待分配,但是所有BUG的数量肯定不止. 2. Scenario testing 测试人员以不同的身份来对网站进行测试,对于无法满足当前身 ...

  5. Daily Srum 10.28

    这两天我们和其他两组进行了一次会议,主要讨论的是用什么框架来搭建这个平台.在线系统的那一组希望我们用nutch.solr.hbase这一套工具,这对于我们两组来说是一次挑战,毕竟我们一开始用的是关系型 ...

  6. Mysql常用配置及优化

    [client]# 该目录下的内容常用来进行localhost登陆,一般不需要修改port = 3306 # 端口号socket = /var/lib/mysql/mysql.sock # 套接字文件 ...

  7. Maven教程--02设置Maven本地仓库|查看Maven中央仓库

    一:设置Maven本地仓库 Maven默认仓库的路径:~\.m2\repository,~表示我的个人文档:例如:C:\Users\Edward\.m2\repository:如下图: Maven的配 ...

  8. BNUOJ 52303 Floyd-Warshall Lca+bfs最短路

    题目链接: https://www.bnuoj.com/v3/problem_show.php?pid=52303 Floyd-Warshall Time Limit: 60000msMemory L ...

  9. 信安实践——CSRF攻击与防御

    1.实验原理 CSRF(Cross-Site Request Forgery,跨站点伪造请求)是一种网络攻击方式,该攻击可以在受害者毫不知情的情况下以受害者名义伪造请求发送给受攻击站点,从而在未授权的 ...

  10. WinForm中DataGridView的全选与取消全选

    /// <summary> /// 全选 /// </summary> private void SelectAll() { //结束列表的编辑状态,否则可能无法改变Check ...