Oracle select 笔记
来源:互联网 发布:淘宝上的泡脚粉有用吗 编辑:程序博客网 时间:2024/06/05 06:55
emp , dept 均为Oracle内置表
--授权语句
conn sys/12346 as sysdba; 连接sysdbagrant create table , create view to scott; 授权
--求部门中哪些人的薪水最高
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 )
--求部门平均薪水的等级
select deptno , avg_sal , grade from
(select avg(sal) avg_sal , deptno from emp group by deptno) t
join salgrade s on (t.avg_sal between s.losal and s.hisal)
--求部门平均的薪水等级
select deptno , avg(grade) from
(select deptno , ename , grade from emp
join salgrade s on (emp.sal between s.losal and s.hisal)) t
group by deptno
--雇员中有哪些人是经理人
select empno , ename from emp
where empno in (select distinct mgr from emp)
--不准用组函数,求薪水的最高值(面试题)
select sal from emp where sal not in
(select e1.sal from emp e1
join emp e2 on (e1.sal < e2.sal) )
--求平均薪水最高的部门的部门编号
select deptno , avg_sal from
( select avg(sal) avg_sal , deptno from emp group by deptno)
where avg_sal =
( select max(avg_sal) from
( select avg(sal) avg_sal from emp group by deptno ) )
--求平均薪水最高的部门的部门名称
select dname from dept where deptno =
( select deptno from
( select avg(sal) avg_sal , deptno from emp group by deptno)
where avg_sal =
( select max(avg_sal) from
( select avg(sal) avg_sal from emp group by deptno ) )
)
--求平均薪水的等级最低的部门的部门名称
第一种方法
select t1.deptno , dname , avg_sal , grade from
(
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.losal and s.hisal)
)
)t1
join dept d on (d.deptno = t1.deptno)
where t1.grade =
(
select min(grade) from
(
select deptno , avg(sal) avg_sal from emp group by deptno
) t
join salgrade s on (t.avg_sal between s.losal and s.hisal)
)
第二种方法 创建视图
conn sys/12346 as sysdba; 连接sysdba
grant create table , create view to scott; 授权
create view v$_dept_avg_sal_info as
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.losal and s.hisal);
select dname , t1.deptno , avg_sal , grade from
v$_dept_avg_sal_info t1
join dept d on (d.deptno = t1.deptno)
where t1.grade =
(
select min(grade) from v$_dept_avg_sal_info
);
--求部门经理人中平均薪水最低的部门名称
--求比普通员工的最高薪水还要高的经理人名称
第一种方法
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 )
)
第二种方法
select mgr , sal ,ename from emp
join
(select max(sal) max_sal from emp where empno not in
(select distinct mgr from emp where mgr is not null))t
on (t.max_sal < emp.sal)
--求薪水最高的前5名雇员
select ename , sal , rownum from
(
select ename , sal from emp order by sal desc
)
where rownum <= 5
--求薪水最高的第6到第10名雇员(重点掌握)
select ename , sal , r from
(
select ename , sal , rownum r from
( select ename , sal from emp order by sal desc )
)
where r >= 6 and r <= 10
--练习 : 求最后入职的5名员工
select ename , to_char(hiredate , 'YYYY-MM-DD HH24:MI:SS') from
(
select ename , hiredate from emp order by hiredate desc
)
where rownum <= 5
--面试题 : 比较效率
select * from emp where deptno = 10 and ename like '%A%';
select * from emp where ename like '%A%' and deptno = 10;
(理论上上面的语句比下面的语句效率高,但实际当中不一定,如果Oracle对语句
做了优化的话,就可能会把第二条语句中的deptno = 10提到ename前面)
- Oracle select 笔记
- oracle 视频笔记1(select)
- oracle 视频笔记1(select)
- Oracle笔记 三、function 、select
- Oracle笔记 三、function 、select
- Oracle笔记 三、function 、select
- Oracle笔记 :基本查询(select)
- Oracle笔记:层次查询(Select)
- Oracle笔记 三、function 、select
- Oracle学习笔记(二):基本SELECT语句
- oracle笔记(8)----select查询
- Oracle学习笔记1—SELECT查询
- oracle学习笔记1-Writing basic sql select statments
- Oracle笔记:Select For Update会产生2个锁
- Oracle 笔记一 select insert update delete transaction create alter
- Oracle笔记 三、function 、select 常用函数 组合
- Oracle学习笔记 2 --简单查询语句(select)
- 01_基本SQL SELECT语句 - Oracle学习笔记
- FireBreath学习之三 JSAPIAuto类的成员函数说明和插件调用DOM方法/属性一般形式
- onSaveInstanceState和onRestoreInstanceState触发的时机
- Linux设备驱动开发详解-Note(12)--- 字符设备驱动(1)
- 内存池设计与实现
- 【摘录】NVRAM\FLASH\NVM的区别
- Oracle select 笔记
- 图像处理笔记(1)
- IIS自动停止,iis自动关闭。应用程序池假死、自动重启以及iis权限等解决办法
- 基于B/S模式的嵌入式视频监控系统的设计
- 在Windows系统上安装与使用Android NDK r5
- 【MySql APIs】很完整的关于怎么用各种方法连接Mysql数据库,和使用API来操作Mysql数据库的资料
- ----------------------------------------华丽的分割线-----------------------------------------------------
- sed学习(4.1.2)
- apache cxf笔记之利用spring创建服务程序