Oracle复杂查询
1:列出所有员工的姓名,部门名称,和工资
select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptno;
2:列出所有部门的详细信息和部门人数
select a2.deptno,a2.dname,a2.loc,count(a1.empno) from emp a1,dept a2 where a1.deptno(+) = a2.deptno group by a2.deptno,a2.dname,a2.loc;
3:列出所有员工的年工资,所在部门名称,按年薪升序排列
select a1.sal*12 ,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptno order by a1.sal*12;
4:查出每个员工的上级主管及所在部门名称,并要求这些主管的薪水超过3000
select employee.ename,boss.ename ,a1.dname from emp employee,emp boss,dept a1 where employee.mgr = boss.empno and boss.deptno = a1.deptno and boss.sal >3000;
5:求出部门名称中带’S’字符的部门员工的工资合计,部门人数
SELECT d.deptno,NVL(SUM(sal),0),COUNT(empno)FROM emp e,dept d WHERE e.deptno(+)=d.deptno AND d.dname LIKE '%S%' GROUP BY d.deptno ;
6:列出部门名称和这些部门的员工信息(数量,平均工资),同时列出那些没有员工的部门
select d.dname,avg(e.sal),count(e.empno) from emp e,dept d where e.deptno(+)=d.deptno group by d.dname;
7:列出在部门”SALES”工作的员工姓名,基本工资,雇用日期,部门名称,假定不知道销售部的部门编号
select a1.ename,a1.sal,a1.hiredate,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptno and a2.dname = 'SALES';
8:列出公司各个工资等级雇员的数量,平均工资
select grade,count(*),avg(sal) from emp, salgrade where sal between losal and hisal group by grade;
9:列出薪水高于在部门30工作的所有员工的薪金的员工姓名和薪金,部门名称
select a1.ename,a1.sal,a2.dname from emp a1, dept a2 where a1.deptno = a2.deptno and sal > all(select sal from emp where deptno = 30);
10:列出受雇日期早于直接上级的所有员工的编号,姓名,部门名称,部门位置,部门人数
SELECT e.empno,e.ename,d.dname,d.loc,temp.count
FROM emp e,emp m,dept d,(
SELECT deptno dno, COUNT(empno) count
FROM emp
GROUP BY deptno) temp
WHERE e.mgr = m.empno(+) AND e.hiredate < m.hiredate
AND e.deptno = d.deptno
AND e.deptno = temp.dno;
11:列出所有“clerk”的姓名及其部门名称,部门人数,工资等级
SELECT e.ename , d.dname ,temp.count,s.grade
FROM emp e, dept d,(
SELECT deptno dno,COUNT(empno) count
FROM emp
GROUP BY deptno) temp,salgrade s
WHERE job='CLERK'
AND e.deptno = d.deptno
AND d.deptno = temp.dno
AND e.sal BETWEEN s.losal AND s.hisal;
12:列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数及所在部门名称,位置,平均工资
SELECT t.job,t.count,d.dname,e.ename,reg.avg
FROM dept d,(
SELECT e.job,COUNT(e.empno) count
FROM emp e
GROUP BY e.job
HAVING MIN(e.sal)>1500
)t,emp e,(
SELECT deptno dno,AVG(sal) avg
FROM emp
GROUP BY deptno
)reg
WHERE e.deptno = d.deptno AND e.job = t.job
AND e.deptno = reg.dno;
13:列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级
select a1.ename,a2.dname,a1.mgr,a3.grade from emp a1,dept a2,salgrade a3,(select avg(sal) mysal from emp) a4 where a1.deptno = a2.deptno and sal between a3.losal and a3.hisal and a1.sal > a4.mysal;
14:列出与SCOTT从事相同工作的所有员工及部门名称,部门人数
SELECT e.empno,e.ename,e.job,d.dname,temp.count FROM emp e,dept d,(SELECT deptno dno,COUNT(empno) count FROM emp GROUP BY deptno) temp
WHERE e.job=(SELECT job FROM emp WHERE ename='SCOTT') AND e.ename<>'SCOTT' AND e.deptno=d.deptno AND temp.dno=e.deptno;
15:列出在每个部门工作的员工数量,平均工资,和平均服务年限
SELECT d.dname,count(e.empno),avg(e.sal),round(avg(sysdate-e.hiredate)/365) from emp e,dept d where e.deptno(+)=d.deptno GROUP BY d.dname;
16:列出各种工作的最低工资及此雇员姓名
select a1.ename,a1.job,a1.sal from emp a1,(select job,min(sal) min_sal from emp group by job) a2 where a1.job=a2.job and a1.sal=a2.min_sal;
17:列出各个部门的MANAGER的最低薪金,姓名,部门名称,部门人数
select e.sal,e.ename,d.dname, count from(select job,min(sal) sal,ename,deptno from emp where job='MANAGER'GROUP BY job,ename,deptno) e,
(select d.deptno,d.dname,count(e.empno) count fromemp e,dept d wheree.deptno=d.deptno GROUP BY d.deptno,d.dname) d
where e.deptno=d.deptno;
Oracle分页(根据ROWNUM分页)
select * from (select a1.*,rownum rn from (select ename,sal from emp order by sal) a1 where rownum<=10) where rn >=6;
Oracle复杂查询的更多相关文章
- Oracle层次查询
Oracle层次查询的语法如下: 下面根据两道“烧脑”的题具体来体现: 1. 根据时间先后顺序,十二星座的英文名称用逗号串起来为'Aries,Taurus,Gemini,Cancer,Leo,Virg ...
- 【SQL】Oracle分页查询的三种方法
[SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...
- 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...
- Oracle参数化查询
Oracle参数化查询默认是根据顺序绑定的 select * from table where name=:p1 and (select id from table2 where name=:p1); ...
- mysql和oracle 分页查询(转)
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习..... (一). mysql的分页查询 mysql的分页查询是最简单的,借 ...
- Oracle分页查询语句的写法(转)
Oracle分页查询语句的写法(转) 分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的 ...
- Oracle生成查询包括对应于所有数据表记录语句中指定的字段名
应用:已知的字段名,表中的所有数据的查询数据库中包含的所有数据表的字段名 操作方法:指定字段名,用户数据库表,它可以执行以下查询 --Oracle生成查询包括对应于所有数据表记录语句中指定的字段名 d ...
- 各种oracle参数查询语句
各种oracle参数查询语句 1.show parameter:--显示各个系统参数配置 2.select * from v$parameter;--显示各个系统参数配置 2.show paramet ...
- oracle高级查询(实例基于scott用户四张表)
oracle高级查询(实例基于scott用户四张表) 分组查询 多表查询 子查询 综合实例 ====================================================== ...
- oracle分页查询及原理分析(总结)
oracle分页查询及原理分析(总结) oracle分页查询是开发总为常用的语句之一,一般情况下公司框架会提供只需套用,对于增删改查而言,查是其中最为关键也是最为难的一块,其中就有使用率最高的分页查询 ...
随机推荐
- 对于js原型和原型链继承的简单理解(第二种,对象冒充)
关键代码 this.parent = Cat; this.parent.apply(this); function Cat(){ this.climb = function(){ aler ...
- javascript版QQ在线聊天挂件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 3月6日 c#语言
语言基础 一.输入与输出 1.Main函数: static void Main(string [] args) { }程序代码需要写在Main函数的花括号内. 2.输出: Console.Write( ...
- Apache之AllowOverride参数详解
通常利用Apache的rewrite模块对 URL 进行重写的时候, rewrite规则会写在 .htaccess 文件里.但要使 apache 能够正常的读取.htaccess 文件的内容,就必须对 ...
- 腾讯CMEM的PHP扩展(转载)
题外话最近公司在做相关的业务,由于Memcached协议缺少返回码,为了保证业务数据的安全性,不得已只好自己写个扩展来实现需求. 基于memcache扩展的2.2.6的稳定版开发而来.代码已经开源,有 ...
- DIV 遮挡问题总结
1.DIV被Silverlight遮挡, 加入windowless参数即可. <object id=”silverlight” data=”data:application/x-silverli ...
- 关于KMP算法理解(快速字符串匹配)
参考:http://www.ruanyifeng.com/blog/2013/05/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm.html 2016-08- ...
- 如何将android studio项目转换成eclipse
更新:虽然本人坚守eclipse很久,但是现在我也不再推荐继续用eclispe了,自己的项目用还没什么问题,但是你如果想用github上的项目,用eclispe会越来越难.如果你仍然感兴趣,继续看下面 ...
- 【转】Ubuntu 修改hosts
原文网址:http://l.14551.org/2009/12/2166 Ubuntu系统的Hosts只需修改/etc/hosts文件,在目录中还有一个hosts.conf文件,刚开始还以为只需要修改 ...
- phpmyadmin导入大量数据比较快的做法
在一次项目在其他机器上配置的时候,将数据库以.sql的形式导出后,在新的机器上想将数据重新导入phpmyadmin的时候.按照以前的在数据库中将所有数据复制过来然后点击sql运行给卡住了(数据量过大) ...