--复杂查询练习

-- 1 、列出所有员工的年工资,按年薪从低到高排序。
SELECT (SAL+NVL(COMM,0))*12 INCOME FROM EMP ORDER BY INCOME;

-- 2 、列出薪金比“ SMITH ”多的所有员工。
--获取SMITH 的工资
SELECT * FROM EMP WHERE SAL >(SELECT SAL FROM EMP WHERE ENAME = 'SMITH');

-- 3 、列出所有员工的姓名及其直接上级的姓名。
SELECT E1.ENAME,E2.ENAME
FROM EMP E1
LEFT JOIN EMP E2
ON E1.MGR = E2.EMPNO;

-- 4 、列出受雇日期早于其直接上级的所有员工。
SELECT E1.ENAME,E1.HIREDATE,E2.ENAME,E2.HIREDATE
FROM EMP E1
LEFT JOIN EMP E2
ON E1.MGR = E2.EMPNO
WHERE E1.HIREDATE <E2.HIREDATE;

-- 5 、列出部门名称和这些部门的员工信息,包括那些没有员工的部门。
SELECT D.DNAME,E.EMPNO,E.ENAME,DEPTNO
FROM EMP E
RIGHT JOIN DEPT D
USING(DEPTNO);

-- 6 、列出所有job 为“ CLERK ”(办事员)的姓名及其部门名称。

--1.查询所有job为“CLERK”的姓名
SELECT D.DNAME,T.ENAME FROM
(SELECT DEPTNO,ENAME FROM EMP WHERE JOB ='CLERK') T,DEPT D
WHERE T.DEPTNO = D.DEPTNO;

-- 7 、列出最低工资大于1500 的各种工作。
SELECT JOB
FROM EMP
GROUP BY JOB
HAVING MIN(SAL)>1500;

-- 8 、列出在部门“ SALES ”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
--1.获取销售部的部门编号
SELECT ENAME,DEPTNO FROM EMP
WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME = 'SALES');

-- 9 、列出工资高于公司平均工资的所有员工。
--获取公司的平均工资
SELECT * FROM EMP WHERE SAL >(SELECT ROUND(AVG(SAL)) AVG_SAL FROM EMP);

-- 10 、列出与“ SCOTT ”从事相同工作的所有员工。
--获取SCOTT的工作
SELECT * FROM EMP WHERE JOB = (SELECT JOB FROM EMP WHERE ENAME = 'SCOTT')
AND ENAME <> 'SCOTT';

-- 11 、列出工资高于在部门 30 工作的所有员工的工资的员工姓名和工资。
--1.获取30号部门员工的工资
SELECT ENAME,SAL FROM EMP WHERE SAL >ALL(SELECT SAL FROM EMP WHERE DEPTNO = 30);

-- 12 、列出在每个部门工作的员工数量、平均工资和平均服务期限(年)。
SELECT COUNT(*),ROUND(AVG(SAL)) AVG_SAL,ROUND(AVG(TO_CHAR(SYSDATE,'YYYY')-TO_CHAR(HIREDATE,'YYYY'))) AVG_YEAR
FROM EMP
GROUP BY DEPTNO;

-- 13 、列出所有员工的姓名、部门名称和工资。
SELECT E.ENAME,D.DNAME,E.SAL
FROM EMP E NATURAL JOIN DEPT D;

-- 14 、列出从事同一种工作但属于不同部门的员工的一种组合。
--[自连接]
--E1 和 E2 都当成员工表

SELECT E1.ENAME,E1.JOB,E1.DEPTNO,E2.ENAME,E2.JOB,E2.DEPTNO
FROM EMP E1,EMP E2
WHERE E1.JOB = E2.JOB
AND E1.DEPTNO <> E2.DEPTNO
AND E1.ENAME<E2.ENAME;

-- 15 、列出所有部门的详细信息和部门人数(包含没有员工的部门)。
SELECT D.*,COUNT(E.EMPNO)
FROM EMP E RIGHT JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
GROUP BY D.DEPTNO,D.DNAME,D.LOC;

-- 16 、列出各种工作的最低工资。
SELECT JOB,MIN(SAL)
FROM EMP
GROUP BY JOB;

-- 17 、列出各个部门的 MANAGER (经理)的最低薪金。
SELECT DEPTNO,MIN(SAL)
FROM EMP
WHERE JOB = 'MANAGER'
GROUP BY DEPTNO;

-- 18 、列出至少有一个员工的所有部门。
SELECT DEPTNO
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*)>=1;

SQL复杂语句查询练习的更多相关文章

  1. sql语句查询

    1. sql语句查询某位数字或者某几位数字开头的数据,字段类型为数字类: %’: 2. sql搜索以4开头和含有李字的数据: select * from wlzbpre_user where real ...

  2. phpcmsv9自定义sql语句查询模型实现

    在phpcmsv9中,自定义sql语句查询可不太好实现,传入sql语句查询很容易被内部转入生成一系列莫名其妙的sql语句,比如最佳前缀等等,直接造成sql语句查询错误,在此也提供两种解决办法,1修改底 ...

  3. 怎样用SQL语句查询一个数据库中的所有表?

    怎样用SQL语句查询一个数据库中的所有表?  --读取库中的所有表名 select name from sysobjects where xtype='u'--读取指定表的所有列名select nam ...

  4. SQL语句查询某表的所有字段及数据类型

    SQL语句查询某表的所有字段及数据类型 SELECT name AS column_name , TYPE_NAME(system_type_id) AS column_type , max_leng ...

  5. sql语句查询数据库表结构信息

    开发中经常用到查询指定表及其字段的信息,以下是我整理的SQL语句查询方法,供自己平时使用也提供给大家参考! 1.适用MS SQL SERVER: SELECT 表名 = then d.name els ...

  6. 如何用SQL语句查询Excel数据?

    如何用SQL语句查询Excel数据?Q:如何用SQL语句查询Excel数据? A:下列语句可在SQL SERVER中查询Excel工作表中的数据. 2007和2010版本: SELECT*FROMOp ...

  7. 怎么用sql语句查询一个数据库有多少张表

    今天在技术群中闲谈时忽然聊到一个问题,那就是当一个数据库中有多张表时怎么快速的获取到表的个数,从而给问询者一个准确的回答. 大家或许会说,这个问题和我们的数据库操作没有太大关系或者不是很挂钩,所以没意 ...

  8. 使用sql语句查询日期在一定时间内的数据

    使用sql语句查询日期在一周内的数据 select * from ShopOrder where datediff(week,ordTime,getdate()-1)=0   //查询当天日期在一周年 ...

  9. Mybatis SQL语句查询

    MyBatis中使用in查询时的注意事项 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach一共有三种类型,分别为List,[](array),Map三种. ...

随机推荐

  1. roadhog中如何拷贝文件

    一:使用 public 目录 我们约定 public 目录下的文件会在 server 和 build 时被自动 copy 到输出目录(默认是 ./dist)下.所以可以在这里存放 favicon, i ...

  2. bash登录过程 其实还不太了解,先码后看

    在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile. ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序 ...

  3. 互评Beta版本——可以低头,但没必要——取件帮

    基于NABCD评论作品,及改进建议 1. 根据(不限于)NABCD评论作品的选题 (1)N(Need,需求) 取件帮是一款有偿互助取件的微信小程序,很大程度上解决了学生因为距离.时间等原因无法取快递的 ...

  4. 20172321 20172333 2017-2018 暑假作业APP

    20172321 20172333 2017-2018 暑假作业APP 项目介绍 项目成员 吴恒佚 20172321 严域俊 20172333 项目简介 从理论上来说,这是一个贪吃蛇游戏. <贪 ...

  5. java 框架 面试

    Java—SSH(MVC)1. 谈谈你mvc的理解MVC是Model—View—Controler的简称.即模型—视图—控制器.MVC是一种设计模式,它强制性的把应用程序的输入.处理和输出分开.MVC ...

  6. caffe添加自己的数据输入层

    整体思路: 阅读caffe数据输入层各个类之间的继承关系,确定当前类需要继承的父类以及所需参数的设置. 编写zzq_data.cpp 在layer_factory.cpp中完成注册: 在caffe.p ...

  7. 校园跳蚤市场-Sprint计划

    一.现状 小组成员初步了解所做项目的大致内容,需要时间一步一步分析和规划. 二.部分需求索引卡 第一个阶段完成项目的其中一个模块(商品信息模块). 三.任务认领 产品负责人:林海信 Master:何武 ...

  8. mvc 路由配置-学习

    MapRoute(RouteCollection, String, String) 映射指定的URL路由. 'Declaration <ExtensionAttribute> _ Publ ...

  9. sql中Union和union all的使用

    该文转载自:http://www.cnblogs.com/chaobaojun/archive/2009/12/24/1631508.html 在MS-SQL如果将两个或更多查询的结果组合为单个结果集 ...

  10. cmd命令行安装,删除Windows证书(certgmr的简单使用)

    在管理证书的时候需要用到certmgr工具. 在cmd中执行certmgr会弹出证书管理的工具,但是不能用命令行去管理证书,需要额外的工具 cermgr.exe:下载链接 https://pan.ba ...