emp表中还有ename(名字),sal(工资),deptno(部门号);
选择各个部门里面工资最高的人的姓名,工资,和部门号;代码如下:
select ename,sal,emp.DEPTNO
from emp join (select max(sal) max_sal,deptno
from emp
group by deptno) temp
on (emp.SAL = temp.max_sal and emp.DEPTNO = temp.deptno)
order by emp.DEPTNO;
求各个部门工资的平均值属于哪个等级。
select t.deptno, t.avgs, grade
from (select deptno, avg(sal) avgs from emp group by deptno) t join salgrade g
on (t.avgs between g.losal and g.hisal);
求各个部门的等级的平均值
select deptno, avg(grade) from
(
select deptno, grade
from emp join salgrade
on(emp.sal between salgrade.losal and salgrade.hisal)
) t
group by deptno;
求雇员中那些是经理
select ename
from emp e
where e.EMPNO in (select distinct m.mgr from emp m);
不用组函数,求薪水的最大值
select sal
from emp
where emp.sal not in
(
select distinct e.sal
from emp e join emp m
on e.sal < m.sal
);
求各部门工资平均值最大的部门编号
select t.deptno
from (
select deptno, avg(sal) avgs
from emp
group by deptno
) t
where t.avgs =(
select max(m.avgs)
from (select deptno, avg(sal) avgs
from emp
group by deptno
) m
);
求部门工资平均值最大的部门名称:
select dname,deptno
from dept
where deptno in(
select t.deptno
from (
select deptno, avg(sal) avgs
from emp
group by deptno
) t
where t.avgs in (
select max(m.avgs)
from (select deptno, avg(sal) avgs
from emp
group by deptno
) m
)
);
求平均工资等级最低的部门名称
select dname
from dept
where dept.DEPTNO in(
select deptno
from(
select deptno,avgsal, grade
from(
select deptno,avg(sal) avgsal
from emp
group by deptno
) t1 join salgrade g
on (
avgsal between g.losal and g.hisal
)
) t2
where t2.grade=(
select min(grade)
from (
select deptno,avgsal, grade
from(
select deptno,avg(sal) avgsal
from emp
group by deptno
) t1 join salgrade g
on (
avgsal between g.losal and g.hisal
)
)
)
);
也可以采用组函数嵌套,但是最多只能嵌套两层。
求比普通员工的最高工资还高的经理人的名称。
select ename from (
select * from emp where emp.EMPNO in (select mgr from emp where mgr is not null)
)
where
sal > (
select max(sal)
from emp e1
where e1.EMPNO not in (
select e2.MGR from emp e2 where e2.MGR is not null
)
);
select ename from emp
where
sal > (
select max(sal)
from emp e1
where e1.EMPNO not in (
select MGR from emp where MGR is not null
)
)
and empno in(select distinct mgr from emp where mgr is not null );
效率比较:
select * from emp where deptno = 10 and ename like '%A%'; 语句一
select * from emp where ename like '%A%' and deptno = 10; 语句二
语句一 > 语句二
rownum,orcale提供了一个伪字段rownum,但是rownum只可以与小于,小于等于联用,但不可以与大于,等于,大于等于联用。
select ename from emp where rownum <=5; (正确)
select ename from emp where rownum =5 ;(错误)
select ename from (select ename,rownum from emp)where rownum =5;(正确)
求工资最高的前五名员工的工资。
select sal from emp where rownum <=5 order by sal desc;(错误)
select sal from (select sal,rownum from emp order by sal desc) where rownum <=5 ;(正确)
求工资最高的第六名到第十名。
select sal from (select sal,rownum r from emp order by sal desc) where r>=6 and r<=10;(错误)
select ename,sal, rownum r from (
select ename, sal from emp order by sal desc
) r <=10 and r>=6;(错误)
select ename,sal from(
select ename,sal, rownum r from (
select ename, sal from emp order by sal desc
)
)where r >=6 and r<= 10;(正确)
分享到:
相关推荐
SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习SQL查询语句的练习
Sql语句练习答案Sql语句练习答案Sql语句练习答案Sql语句练习答案Sql语句练习答案Sql语句练习答案Sql语句练习答案Sql语句练习答案Sql语句练习答案
这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习这是带答案的sql语句练习
很详细的数据库语句练习题 数据库经典语句练习题+答案详解 认真完成习题 你会发现你的数据库的问题全都解开了 认真做完之后上班那些数据库部分的SQL语句应该没有问题,大家可以一起学习一下
经典的SQL语句练习
sql语句练习,能有助于理解数据库的各项数据操作
数据库sql语句的练习题
最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习题汇总(面试必备) 最全sql查询语句练习...
SQL语句强化练习工具 关于 写这小工具的一些说明 1 连接学校机房的SQL 经常卡(好大杯具) 2 有些同学或网吧的电脑 没装 SQL2008 3 每次课堂练习 都得先创个(浪费时间)
SQL语句基本以及加强练习题,基本查询,连接查询,嵌套查询等,基本的修、插、删、改等语句都有,是面试要掌握的基本东西
是关于图书借书表的SQL语句练习题,会对SQL语句的各个内容有所好的帮助
sql语句强化练习习题及答案,很好的例子
SQL语句练习、学生可以查看自学SQL相关语句的练习
关于查询的SQL练习题,上面附加有题目和答案,用得着的朋友可以参考下....
SQL语句典型练习题(5套含数据)
sql数据库练习题
对于SQL数据库的学习和操作能提供帮助。
MySQL SQL语句练习题及答案
关于sql 语句的基本练习 很适合新手里面附加了题目和答案
DDL用来创建数据库中的各种对象,包括数据库模式、表、视图、索引、同义词、聚簇等,它的基本语句有:CREATE DATABASE、CREATE TABLE、CREATE VIEW、CREATE INDEX等。 (4)数据控制语言(DCL) DCL用来授予或回收...