1、选择在部门 30 中员工的所有信息
Select * from emp where deptno=30;
2、列出职位为(MANAGER)的员工的编号,姓名
Select empno,ename from emp where job ='MANAGER';
3、找出奖金高于工资的员工
Select * from emp where comm>sal;
4、找出每个员工奖金和工资的总和
Select ename,sal+NVL(comm,0) AS Total from emp;
5、找出部门 10 中的经理(MANAGER)和部门 20 中的普通员工(CLERK)
Select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK');
6、找出部门 10 中既不是经理也不是普通员工,而且工资大于等于 2000 的员工
Select * from emp where deptno=10 and job not in('MANAGER','CLERK') and sal>=2000;
7、找出有奖金的员工的不同工作
Select distinct job from emp where comm is not null and comm>0;
8、找出没有奖金或者奖金低于 500 的员工
Select * from emp where comm<500 or comm is null;
9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
select ename from emp order by hiredate ;
10、找出每个月倒数第三天受雇的员工(如:2009-5-29)
select * from emp where last_day(hiredate)-2=hiredate;
11、找出 25 年前雇的员工
select * from emp where hiredate<=add_months(sysdate,-25*12);
12、所有员工名字前加上 Dear ,并且名字首字母大写
select 'Dear ' || initcap(ename) from emp;
13、找出姓名为 5 个字母的员工
select * from emp where length(ename)=5;
14、找出姓名中不带 R 这个字母的员工
select * from emp where ename not like '%R%';
15、显示所有员工的姓名的第一个字
select substr(ename,0,1) from emp;
16、分组统计各部门下工资>500 的员工的平均工资、
Select avg(sal) from emp where sal>500 group by deptno ;
17、统计各部门下平均工资大于 500 的部门
select deptno,avg(sal) from emp group by deptno having avg(sal)>500 ;
18、算出部门 30 中得到最多奖金的员工奖金
Select max(comm) from emp where deptno = 30 ;
19、算出部门 30 中得到最多奖金的员工姓名
select ename from emp where comm = (select max(comm) from emp where deptno=30);
20、算出每个职位的员工数和最低工资
Select job,min(sal),count(*) from emp group by job;
Select * from emp where deptno=30;
2、列出职位为(MANAGER)的员工的编号,姓名
Select empno,ename from emp where job ='MANAGER';
3、找出奖金高于工资的员工
Select * from emp where comm>sal;
4、找出每个员工奖金和工资的总和
Select ename,sal+NVL(comm,0) AS Total from emp;
5、找出部门 10 中的经理(MANAGER)和部门 20 中的普通员工(CLERK)
Select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK');
6、找出部门 10 中既不是经理也不是普通员工,而且工资大于等于 2000 的员工
Select * from emp where deptno=10 and job not in('MANAGER','CLERK') and sal>=2000;
7、找出有奖金的员工的不同工作
Select distinct job from emp where comm is not null and comm>0;
8、找出没有奖金或者奖金低于 500 的员工
Select * from emp where comm<500 or comm is null;
9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面
select ename from emp order by hiredate ;
10、找出每个月倒数第三天受雇的员工(如:2009-5-29)
select * from emp where last_day(hiredate)-2=hiredate;
11、找出 25 年前雇的员工
select * from emp where hiredate<=add_months(sysdate,-25*12);
12、所有员工名字前加上 Dear ,并且名字首字母大写
select 'Dear ' || initcap(ename) from emp;
13、找出姓名为 5 个字母的员工
select * from emp where length(ename)=5;
14、找出姓名中不带 R 这个字母的员工
select * from emp where ename not like '%R%';
15、显示所有员工的姓名的第一个字
select substr(ename,0,1) from emp;
16、分组统计各部门下工资>500 的员工的平均工资、
Select avg(sal) from emp where sal>500 group by deptno ;
17、统计各部门下平均工资大于 500 的部门
select deptno,avg(sal) from emp group by deptno having avg(sal)>500 ;
18、算出部门 30 中得到最多奖金的员工奖金
Select max(comm) from emp where deptno = 30 ;
19、算出部门 30 中得到最多奖金的员工姓名
select ename from emp where comm = (select max(comm) from emp where deptno=30);
20、算出每个职位的员工数和最低工资
Select job,min(sal),count(*) from emp group by job;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29439655/viewspace-1085768/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29439655/viewspace-1085768/