oracle 查询 10题
说明:表数据来自oracle 初始用户之一scott里面的三个初始表:emp,dept,salgrade
--1、查询员工表中工资最高的雇员的员工号、员工姓名、工资和部门号。
select empno,ename,sal,deptno from emp where sal=(select max(sal) from emp);
--2、薪水大于1200的雇员,按照部门编号进行分组,分组后平均薪水必须大于1500,查询各分组的平均水平,按照工资的倒序进行排列。
select deptno,avg(sal) from emp where sal>1200 group by deptno having avg(sal)>1500 order by avg(sal) desc;
--3、查询每个雇员和其所在部门名、按照员工名字排序,要求值显示第三条到第六条记录
-- rownum是伪列,rownum>2,没有查询到任何记录。
-- 因为rownum总是从1开始的,第一条不满足去掉的话,第二条的rownum 又成了1。依此类推,所以永远没有满足条件的记录。
-- 可以这样理解:rownum是一个序列,是Oracle数据库从数据文件或缓冲区中读取数据的顺序
select * from
(select emp.ename,dname,rownum rn from emp,dept where emp.deptno=dept.deptno and rownum<=6 order by emp.ename )--必须是内小于外大于
where rn>=3;
-- 内连接 只返回两个表中连接字段相等的行。
select ename,dname from emp inner join dept on emp.deptno = dept.deptno;
-- 第二种方式
select * from
(select emp.ename,dname,rownum rn from emp,dept where emp.deptno=dept.deptno order by emp.ename )
where rn between 3 and 6;
-- 第三种
select * from(
select t.*, rownum rn from(
select ename,dname from emp inner join dept on emp.deptno = dept.deptno order by emp.ename
) t where rownum<=6
) where rn>=3;
-- 4、查询每个雇员姓名以及工资所在的等级。
--第一种
select ename,sal,grade from emp,salgrade where sal between losal and hisal;
--第二种 内连接
select ename,sal,grade from emp inner join salgrade on sal between losal and hisal;
--5、查询雇员名第二个字母不是a的雇员的姓名、所在的组名、工资所在的等级
--第一种
--用substr分割截取字符串
select ename,dname,grade from emp,dept,salgrade
where sal between losal and hisal and emp.deptno=dept.deptno and substr(ename,2,1) !='a' and substr(ename,2,1) !='A';
--第二种
--内连接 模糊查询,第一个下划线代表第一个字符
select ename,dname,grade
from emp inner join dept on dept.deptno=emp.deptno
inner join salgrade on sal between losal and hisal
where ename not like '_A%';
--6、查询每个雇员和其经理的姓名
--第一种 使用自连接
select e1.ename empname,e2.ename mgrname from emp e1,emp e2
where e1.mgr=e2.empno;
--第二种 自连接与内连接
select e1.ename empname,e2.ename mgrname
from emp e1 inner join emp e2
on e1.mgr=e2.empno;
--7、查询每个雇员和其经理的姓名(包括公司老板本身(他上面没有经理));
--左连接,左表中所有记录()以及右表中连接字段相等的记录
select e1.ename empname,e2.ename mgrname from emp e1 left join emp e2 on e1.mgr=e2.empno;
--8、查询每个雇员的姓名及其所在部门的部门名(包括没有雇员的部门)
--右连接,油表中所有记录()以及右表中连接字段相等的记录
select ename,dname from emp right join dept on emp.deptno=dept.deptno;
--9、查询每个部门中工资最高的人的姓名、薪水和部门编号。
--把查询变成一个子表
--group by要包含所有选择的字段(除了函数的),所以先查询出每个部门最高工资,然后和原始表关联,就可以查出部门最高工资者的所有信息
select ename,sal,emp.deptno from emp
inner join
(select deptno,max(sal) msal from emp group by deptno) maxsalresult
on maxsalresult.deptno=emp.deptno and sal=maxsalresult.msal;
--10、查询每个部门平均工资所在的等级
select deptno,grade,avgsalresult.avgsal avragesal
from salgrade inner join
(select avg(sal) avgsal,deptno from emp group by deptno) avgsalresult
on avgsal between losal and hisal;
oracle 查询 10题的更多相关文章
- 45 个非常有用的 Oracle 查询语句
这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快 ...
- oracle 查询最近执行过的 SQL语句(转载)
oracle 查询最近执行过的 SQL语句 (2014-06-09 18:02:43) 转载▼ 分类: Database oracle 查询最近执行过的 SQL语句 select sql_text ...
- oracle 查询最近执行过的 SQL语句
oracle 查询最近执行过的 SQL语句 select sql_text,last_load_time from v$sql order by last_load_time desc; SELE ...
- Oracle查询被锁的表及进程的方法
Oracle查询可以有多种方法,下面为您介绍的是如何Oracle查询被锁的表及Oracle查询连接的进程的方法,希望对您能够有所帮助. 一.查看被锁的表 select p.spid,a.serial# ...
- 40多个非常有用的Oracle 查询语句
给大家介绍是40多个非常有用的Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有Oracle 开发者都必备的技能,所以快快收藏吧! 日期 ...
- 45个非常有用的 Oracle 查询语句小结
45个非常有用的 Oracle 查询语句小结 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 ...
- 45 个非常有用的 Oracle 查询语句(转)
这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快快收 ...
- Oracle查询速度慢的原因总结
Oracle查询速度慢的原因总结 查询速度慢的原因很多,常见如下几种:1,没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)2,I/O吞吐量小,形成了瓶颈效应.3,没有创建计算列导致 ...
- 40+ 个非常有用的 Oracle 查询语句
40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快快收藏吧! 日期/时间 ...
随机推荐
- 百度编辑器(ueditor)踩坑,图片转存无法使用
在使用 百度编辑器 的过程中碰到了一些问题,图片转存功能无法使用, 即便是疯狂地在官方 Demo.文档.论坛甚至是 GitHub 上也没找到理想的答案.(┗|`O′|┛) (真是日了狗) 问题描述 默 ...
- Nova官方资料入口处
Nova官方资料地址: https://www.openstack.org/software/releases/queens/components/nova --> https://wiki.o ...
- Java-Maven(十一):Maven 项目出现pom.xml错误:Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin
Maven项目出现ERROR: eclipse更新了Maven插件后,让后就出现了以下错误: Description Resource Path Location Type Conflicting l ...
- F12修改html进行本地js操作页面元素
F12修改html进行本地js操作页面元素
- 将linux上的网站代码托管到gogs git服务器上进行实时同步(实战)
一.说明 本说明只针对php,其他语言需要编译请用别的架构实现 二.实现效果 本地开发员门提交推送代码到git服务器,会立即同步更新网站服务器上代码 三.实战步骤小节 首次托管请先看 https: ...
- thinkphp5---join联合查询
使用thinkphp3.2进行联合查询,join联合查询: $list = M('document as d') ->join('tp_admin_column as c on d.cid = ...
- Python分词工具——jieba
jieba简介 python在数据挖掘领域的使用越来越广泛.想要使用python做文本分析,分词是必不可少的一个环节在python的第三方包里,jieba应该算得上是分词领域的佼佼者. GitHub地 ...
- Python - Django - form 组件基本用法
普通 form 表单的处理: reg.html: <!DOCTYPE html> <html lang="en"> <head> <met ...
- C#基于RabbitMQ实现客户端之间消息通讯实战演练
一.背景介绍和描述 MQ消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手段之一.何时需要消息队列?当你需要使用 ...
- 【电子电路技术】PoE供电技术的优缺点
转自http://www.mamicode.com/info-detail-1059108.html 1PoE供电稳定吗? 随着近几年网络监控的迅猛发展,技术门槛也是越来越高,厂商提供的技术支持也越来 ...