一. 常见问题

1) 求部门中哪些人的薪水最高

Select ename, sal from emp

Join (select max(sal) max_sal, deptno from emp group by deptno) t

On (emp.sal = t.max_sal and emp.deptno = t.deptno);

2) 求部门平均薪水的等级

Select deptno, avg_sal, grade from

(select deptno, avg(sal) avg_sal from emp group by deptno) t

Join salgrade s on (t.avg_sal between s.lowsal and s.highsal);

3) 求部门平均的薪水等级

Select deptno, avg(grade) from

(select deptno, ename, grade from emp join salgrade s on (emp.sal between s. lowsal and s.highsal)) t

Group by deptno;

4) 求雇员中有那些人是经理人

Select ename from emp where empno in (select distinct mgr from emp);

5) 不准用组函数,求薪水的最高值(面试题)

Select distinct sal from emp where sal not in

(select distinct e1.sal from emp e1 join emp e2 on (e1.sal < e2.sal));

6) 求平均薪水最高的部门的部门编号

Select deptno from (select avg(sal) avgsal, deptno from emp group by deptno)

Where avgsal = (select max(avgsal) from (select avg(sal) avgsal, deptno from emp group by deptno));

7) 求平均薪水最高的部门名称

Select dname from dept where deptno =

(

Select deptno from (select avg(sal) avgsal, deptno from emp group by deptno)

Where avgsal = (select max(avgsal) from

(select avg(sal) avgsal, deptno from emp group by deptno)

);

);

8) 求平均薪水的等级最低的部门的部门名称

select deptname

from (

select deptno, grade

from (

select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on

(t.avg_sal between s.lowsal and s.highsal)

) t1 join dept d on (t1.deptno = d.deptno);

where t1.grade =

(

select min(grade)

from (

select deptno, grade

from (select deptno,avg(sal) avg_sal from emp group by deptno) t join salgrade s on

(t.avg_sal between s.lowsal and s.highsal)

)

);

9) 部门经理人中平均薪水最低的部门名称

Create view v_mgr_avgsal_by_dept as

Select avg(salary) avg_sal, deptno

from emp

where empno in (select distinct mgr from emp)

group by deptno;

select dname

from v_mgr_avgsal_by_dept t join dept d on (t.deptno = d.deptno)

where t.avg_sal =

(

Select min(avg_sal) from v_mgr_avgsal_by_dept

);

10) 求比普通员工的最高薪水还要高的经理人名称

Select ename

from emp

Where empno in (select distinct mgr from emp where mgr is not null)

And sal > (

Select max(sal)

from emp

where empno not in (select distinct mgr from emp where mgr is not null)

);

11) 求薪水最高的前五名雇员

Select ename, sal

From (select ename, sal from emp order by sal desc) where rownum<=5

12) 求薪水最高的第 6 到第 10 名雇员

方法一:

select salary

from (

select salary, rownum r

from

(select salary from employees order by salary desc)

)

where r between 6 and 10

方法二:

select salary from

(

select salary, rownum r from

(select salary from employees order by salary desc)

where rownum <= 10

)

where r between 6 and 10

13) 比较效率

Select * from emp where deptno = 10 and ename like ‘%A%’; // 理论上效率稍高

Select * from emp where ename like ‘%A%’ and deptno = 10; // 因为判断数字比字符快

14) 有三个表 S , C , SC

S ( SNO , SNAME )代表(学号,姓名)

C ( CNO , CNAME , CTEACHER )代表(课程号,课名,老师)

SC ( SNO , CNO , GRADE )代表(学号,课程号,成绩)

问题:

1, 找出没选过“黎明”老师的所有学生姓名

select sname

from s

where sno not in (

select s.sno

from sc join s on(sc.sno = s.sno) join c on(sc.cno = c.cno)

where c.cteacher = ‘liming’)

2, 列出 2 门以上(含 2 门)不及格学生姓名及平均成绩

select sname

from s

where sno in

(

select sno

from sc

where grade < 60

group by sno

having count(*) >= 2

)

3, 既学过一号课程又学过二号课程所有学生的姓名

select sname

from s

where sno in

(

select s.sno

from sc join s on (sc.sno = s.sno)

where cno = 1 or cno =2

group by s.sno

having count(*) = 2

)

15) 树状结构的存储与展示

Create table article

(

Id number primary key,

Context varchar2(4000), -- 内容

Pid number, -- 父 ID

Isleaf number(1), --0 代表非叶子节点, 1 代表叶子节点

aLevel number(2) -- 深度

);

Insert into article values (1, ‘ 蚂蚁大战大象 ’, 0, 0, 0);

Insert into article values (2, ‘ 大象被打趴了 ’, 1, 0, 1);

Insert into article values (3, ‘ 蚂蚁也不好过 ’, 2, 1, 2);

Insert into article values (4, ‘ 瞎说 ’, 2, 0, 2);

Insert into article values (5, ‘ 没有瞎说 ’, 4, 1, 3);

Insert into article values (6, ‘ 怎么可能 ’, 1, 0, 1);

Insert into article values (7, ‘ 怎么没有可能 ’, 6, 1, 2);

Insert into article values (8, ‘ 可能性是很大的 ’, 6, 1, 2);

Insert into article values (9, ‘ 大象进医院了 ’, 2, 0, 2);

Insert into article values (10, ‘ 护士是蚂蚁 ’, 9, 1, 3);

Commit;

-- 显示树状结构

create or replace procedure p

(v_pid article.pid%type, v_level binary_integer)

is

cursor c is select * from article where pid = v_pid;

v_split varchar2(1024) := '';

begin

for i in 1..v_level loop

v_split := v_split || '*****';

end loop;

for v_article in c loop

dbms_output.put_line(v_split || v_article.context);

if (v_article.isleaf = 0) then

p(v_article.id, v_level + 1);

end if;

end loop;

end;

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle笔记 八,Oracle学习笔记8相关推荐

  1. 判断题:oracle自带的sql语言环境是pl/sql,Oracle之PL/SQL学习笔记之数据类型(三)

    Oracle之PL/SQL学习笔记之数据类型(三) 所有的编程语言中变量是使用最频繁的.PL/SQL作为一个面向过程的数据库编程语言同样少不了变量,利用变量可以把PL/SQL块需要的参数传递进来,做到 ...

  2. vb.net调用oracle存储过程,vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc...

    vbnet2008连接oracle增删改查学习笔记(经典crud_含存储过程).doc 我的VBNETORACLE增删改查学习笔记(本源码在VBNET2008下测试通过)学习VBNET有一段时间了,之 ...

  3. Oracle之PL/SQL学习笔记之有名块练习

    2019独角兽企业重金招聘Python工程师标准>>> Oracle之PL/SQL学习笔记之有名块练习 存储过程案例: 案例1: 根据雇员姓名跟新雇员工资,如果雇员不存在输出没有该雇 ...

  4. oracle数据库基础知识总结,oracle数据库基础知识学习笔记

    oracle数据库基础知识学习笔记 一.oracle数据库类型: Char:  字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...

  5. 读书笔记——第八周学习笔记

    第八周学习笔记 一.数据行 1. 利用逗号分隔将数据导入数据库中 将excel保存为后缀为.csv的文件 在数据库中插入表时跟之前有一点不同 BULK INSERT tb_Course FROM 'C ...

  6. 黄海广博士的机器学习个人笔记及深度学习笔记

    想要下载黄海广博士的机器学习个人笔记及深度学习笔记的请复制下面链接 https://download.csdn.net/download/wgllovemother/10447758 备注:有想下载  ...

  7. Tsai笔记:GPOPS学习笔记(1)—— 高斯伪谱法的最基本优化方程求解思路(例子介绍)

    Tsai笔记:GPOPS学习笔记(1)-- 高斯伪谱法的最基本优化方程求解思路(例子介绍) Tsai三步.(第一步,基本说明.第二步,结果图显示.第三步,代码展示.) 第一步,基本说明. A.问题说明 ...

  8. oracle 百万记录 cache,学习笔记:通过案例深入学习In-Memory Database Cache 总结配置过程...

    天萃荷净 详细记录关于In-Memory Database Cache配置方法与使用案例 一.Oracle数据库创建相关用户和权限 1.创建timesten用户 store information a ...

  9. oracle 触发器登录,【学习笔记】Oracle触发器 实现指定用户登录oracle案例

    天萃荷净 触发器实现指定用户登录oracle,分享一篇关于Oracle数据库安全策略,通过Oracle触发器实现限定user用户登录Oracle数据库的方法 1.创建允许登录用户表 CREATE TA ...

  10. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...

    天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...

最新文章

  1. JNI/NDK开发指南(八)——调用构造方法和父类实例方法
  2. NVIDIA Jetson TK1学习与开发(八):图文详解OpenGL在Jetson TK1上的安装和使用
  3. POJ 3177 Redundant Paths (边双连通+缩点)
  4. VMware ESXi部署OVF模板
  5. Bash脚本教程之字符串操作
  6. linux blender骨骼绑定,Linux下安装Blender
  7. java varargs_Java中方法重载中的Varargs
  8. 给2021的Java一些建议,纯干货
  9. es大量数据导入效率优化
  10. Delphi Invalidate的用法
  11. matlab啁啾信号,啁啾信号chirp(扫频余弦信号)
  12. 文件上传和下载的常用测试点
  13. Markdown编辑器使用教程_被迫流浪者的博客
  14. 【Matlab】使用龙格库塔方法求积分
  15. 万恶的 eval() ?
  16. Anaconda及pytorch详细安装及使用教程
  17. iPhone4s提示:iPhone尚未激活
  18. python看网络电视
  19. 千岛湖-印象中的天堂游记
  20. 血栓清道夫机器人_血栓斑块清道夫

热门文章

  1. 身份证的安全问题与眼镜的关系
  2. Vim查找全匹配字符串
  3. 什么是Cookie?Cookie用来干什么的?
  4. php 门户网站,PHP的CMS系统整理
  5. 递归——斐波那契数列
  6. 【Java工具类】(22)—服务器传文件工具类SCp和Sftp
  7. js返回到上一个页面刷新与不刷新的写法
  8. 欧姆龙PLC的模拟量控制方式
  9. 子集和问题 深搜回溯法
  10. Cisco ACS 5.6安装部署