初学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 ...
随机推荐
- Django之Models与ORM操作
一.models例子 from django.db import models class User(models.Model): """ 用户表 "" ...
- bing词典
一.bug寻找 bug1:点击单词挑战之后选择四级词汇,然后一直狂击答案,点到一个时候就会出现一个情况:不管点击哪一个选项都不会跳至下一题,而且屏幕上方的已做题目数 x/20中的x会乱跳. bug2: ...
- 【每日scrum】第一次冲刺day5
请教以前做过类似软件的同学,受益匪浅,启发自己
- IIs8 svc
IIS8中添加WCF支持几种方法小结[图文] 方法一 最近在做Silverlight,Windows Phone应用移植到Windows 8平台,在IIS8中测试一些传统WCF服务应用,发现IIS8不 ...
- binding(转)
1,Data Binding在WPF中的地位 程序的本质是数据+算法.数据会在存储.逻辑和界面三层之间流通,所以站在数据的角度上来看,这三层都很重要.但算法在3层中的分布是不均匀的,对于一个3层结构的 ...
- c#学习路线及目录导航
一 很久前的想法 转眼间,2018年已经过了四分之一,从我进入学校选择计算机专业到现在工作,已经过去了4年之久了.这一路走来经历了很多的曲折,对软件开发这个职业有了许多新的认识,我主要是从事NET领域 ...
- Java中实现PCA降维
package com.excellence.splitsentence; import java.net.UnknownHostException; import java.util.ArrayLi ...
- ABP ModuleZero后台框架materialize禁止模拟select和checkbox
使用abp modulezero自带那个后台框架发现一个操蛋的问题,所有的select和checkbox都被改成div模拟的,虽然比原生美观,但有时候真的很难用. 比如说要用select做一个联动菜单 ...
- Effective Modern C++翻译(6)-条款5:auto比显示的类型声明要更好
在概念上说,auto关键字和它看起来一样简单,但是事实上,它要更微妙一些的.使用auto会让你在声明变量时省略掉类型,同时也会防止了手动类型声明带来的正确性和性能上的困扰:虽然按照语言预先定义 ...
- centos7开机出现try again to boot into default maintenance give root password for maintenance
开启centos7出现下面两句话,然后直接输出root密码,就可以登录,但是登录后,发现一些文字显示出来的是乱码 try again to boot into default maintenanceg ...