初学SQL语句练习2
-- 子查询
--单行子查询
-- 查询出所有比雇员姓名为“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的更多相关文章
- 初学SQL语句练习1
--[1 ]查询出每个月倒数第三天受雇的所有员工SELECT * FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE)-2; --[2 ]找出早于30 年前受雇的员工S ...
- 【初学Java学习笔记】SQL语句调优
1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认 ...
- Oracle行转列、列转行的Sql语句总结
多行转字符串 这个比较简单,用||或concat函数可以实现 SQL Code 12 select concat(id,username) str from app_userselect i ...
- SQL语句之行操作
SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 关系型数据库的存储形式 在关系型数据库中,数据都是以类似于Excel表格的形式存储 ...
- mysql学习之 sql语句的技巧及优化
一.sql中使用正则表达式 select name,email from user where email Regexp "@163[.,]com$"; sql语句中使用Regex ...
- 一条Sql语句分组排序并且限制显示的数据条数
如果我想得到这样一个结果集:分组排序,并且每组限定记录集的数量,用一条SQL语句能办到吗? 比如说,我想找出学生期末考试中,每科的前3名,并按成绩排序,只用一条SQL语句,该怎么写? 表[TScore ...
- LINQ to SQL语句(7)之Exists/In/Any/All/Contains
适用场景:用于判断集合中元素,进一步缩小范围. Any 说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).有2种形式,分别为简单形式 ...
- Oracle ------ SQLDeveloper中SQL语句格式化快捷键
Oracle SQL Developer中SQL语句格式化快捷键: 每次sql复制到SQL Developer面板的时候,格式老不对,而且看起来很不舒服,所有的sql都挤在一行完成. 这时我们可以全选 ...
- SQL语句优化
(1) 选择最有效率的表名顺序 ( 只在基于规则的优化器中有效 ) : ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名, FROM 子句中写在最后的表 ( 基础表dri ...
随机推荐
- spring冲刺第九天
昨天使炸弹可以炸死人物并可以炸没砖块,并试着将小怪加入地图. 今天设计游戏的道具,比如吃了道具人物反方向运动等. 遇到的问题设计不够完善,道具单一.
- Android笔记-1
1.点击按钮出现小窗口(响应事件) 配置方式: Activity_main.xml文件中:<Button (输入)android: onClick=”test1” /> MainActiv ...
- ADT队列/FIFO表
队列是一种特殊的表,只在表首进行删除,只在表尾进行插入,按照先进先出原则操作(First In First Out),又称为FIFO表: 队列的指针实现代码: #include<cstdio&g ...
- node websocket学习研究
websocket作为不同于http的数据传输方式,是开发一些实时系统的不二选择. 最近在研究开发websocket方面的小程序.小程序客户端直接对websocket做了封装.自己只要写后端就可以了. ...
- 虚拟机VMware中的CentOS字符界面和图形界面切换
在虚拟机中安装CentOS后展示的界面是图形用户界面,想切换到命令模式,于是查了linux下切换模式的方法,可是按了ctrl+alt+f1.f2....f7都是没用,后来发现是因为按键冲突的原因 问题 ...
- 通过session 怎么防止表单的重复提交!
1.在提交表单的时候使用隐藏域: String tokenValue=new Date().getTime(); <input type="hidden" name=&quo ...
- [转帖]awk 入门
awk其实不仅仅是工具软件,还是一种编程语言.不过,本文只介绍它的命令行用法,对于大多数场合,应该足够用了. http://www.ruanyifeng.com/blog/2018/11/awk.ht ...
- 计算机网络【2】—— CSMA/CD协议
参考文献: https://blog.csdn.net/loveCC_orange/article/details/79177129 一.认识以太网 最早的以太网是将许多计算机都连接到一根总线上. 使 ...
- Python批量文件重命名
今天,得到一个里面都是图片的文件夹,但是图片都没有后缀,因此想用Pythton批量地为所有的文件加上".jpg"的后缀,代码如下: #-*- coding:utf-8 -*- #重 ...
- Qt——结合qt和python
经常使用qt的童鞋一定有过这样的经历:百度或Google某个关于Qt的问题的时候,发现有的解答不是用的C++,而是包含很多py.__init__.self之类的词. 如果学过python,你会发现,这 ...