1.查询emp表中的员工号以及每个人工资的80%。
select EMPNO,SAL*0.8 from emp
2.查询emp表中员工的员工号和姓名,要求输出格式如下:
EMPNO 'NAMEIS: ENAME
---------- -------- ----------
7369 Name is: SMITH
7499 Name is: ALLEN
7521 Name is: WARD
select empno,'Name is',ename from emp;
3.查询emp表中员工编号,姓名,要求姓名输出小写。
select empno,'Name is',ename from emp;
4.查询emp表中员工姓名、工资和工种,要求将姓名列标题改为employeename,工资列标题改为salary。
select ename as employeename,sal salary,job from emp;
5.使用字符串连接运算符‘||’输出员工姓名及其一个月工资。
MONTHY
---------------------------
SMITH:1month salary=800
ALLEN:1month salary=1600
WARD:1month salary=1250
select ename||':1 month salary='||sal as monthy from emp;
6.输出所有员工工种。
select distinct job from emp;
7.查询10号部门的员工号、员工姓名和工资。
select empno,ename,sal from emp where deptno=10;
8.查询工资超过1500的员工的编号、姓名和工资。
select empno,ename,sal from emp where sal>1500;
9.查询工资不在1000-2000之间的员工的编号、姓名、工资和部门号。
select empno,ename,sal,deptno from emp where sal not between 1000 and 2000;
10.查询10号部门和30号部门的所有员工的编号、姓名、工资和部门号。
select empno,ename,sal,deptno from emp where deptno in (10,30);
11.查询姓名以's'开头的员工的编号、姓名、工资和部门号。
EMPNO ENAME SAL DEPTNO
---------- ---------- ---------- ----------
7369 SMITH 800 20
7788 SCOTT 3000 20
select empno,ename,sal,deptno from emp where ename like 'S%';
12.查询奖金不为空的员工的编号、姓名、工资、奖金和部门号。
select empno,ename,sal,comm,deptno from emp where comm is not null;
13.查询奖金不为空且工资超过1500的员工的编号、姓名、工资、奖金和部门号。
select empno,ename,sal,comm,deptno from emp where comm is not null and sal>1500;
14.查询工种是salesman或者clerk且工资超过1500的员工的编号、姓名、工资、奖金和部门号。
select empno,ename,sal,comm,deptno from emp where job in ('SALESMAN','CLERK') and sal>1500;
15.查询emp表中的员工号、员工姓名、工种、工资,并按工资降序排序。
select empno,ename,job,sal from emp order by sal desc;
16.查询emp表中的员工号、员工姓名、工种、工资,以及员工总收入(工资奖金之和),并按工资奖金之和升序排序。
select empno,ename,job,sal ,sal+nvl(comm,0)from emp order by sal+nvl(comm,0) asc;
17.将上题中工资和奖金之和起别名为earnings,排序输出。
select empno,ename,job,sal ,sal+nvl(comm,0) as earnings from emp order by earnings asc;
18.查询emp表中员工姓名、工资、部门号,并按部门号升序排序,同一部门按工资降序排序。
select ename, sal ,deptno from emp order by deptno,sal desc;
19.求emp表中所有员工的平均工资。
select avg(sal) from emp;
20.计算工资在1000-3000之间的员工人数。
select count(*) from emp where sal between 1000 and 3000;
21.查询工作以“sales”开头的员工的平均工资,最高工资、最低工资和总工资。
Select avg(sal),max(sal),min(sal),sum(sal) from emp where job like ‘SALES%’
22.查询所有员工的最早入职时间和最晚入职时间。
Select min(HIREDATE),max(HIREDATE) from emp;
23.查询30号部门的员工人数。
Select count(*) from emp where deptno=30;
24.查询30号部门有奖金的员工人数。
Select count(*) from emp where deptno=30 and comm is not null;
25.查询所有员工的平均奖金。
Select avg(nvl(comm,0)) from emp;
26.查询每个部门的平均工资。
Select deptno,avg(sal) from emp group by deptno;
27.查询每个部门各工种的雇员数。
Select deptno,count(*) from emp group by deptno,jop;
28.查询平均工资超过2000的部门,并按部门号进行排序。
Select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;
29.查询所有员工的员工号、姓名、部门号和部门名称。
Select empno,ename,emp.deptno,dname from emp,dept where emp.deptno=dept.deptno;
30.查询每个员工的员工号、姓名、入职时间、工资和级别。
Select empno,ename,
hiredate,sal, grade from emp,salgrade where losal<=sal and hisal=>sal
Select empno,ename,
hiredate,sal, grade from emp,salgrade where sal between losal and hisal;
31.查询所有员工的姓名和他的上司的姓名。
Select worker.ename,manager.ename from emp worker,emp manager
Where worker.mgr=manager.empno(+);
32.查询所有工资大于2000的雇员的姓名和他的经理的名字。
Select worker.deptno, worker.ename,manager.ename ,worker.sal from emp worker,emp manager Where worker.sal>2000 and worker.deptno=manager.deptno and
manager.job=’ MANAGER’
33.查询比7566号员工工资高的员工的姓名。
Select ename,sal from emp where sal>(select sal from emp where empno=7566);
34.查询工资最低的员工的姓名、职务和工资信息。
Select ename,sal,job,grade from emp,salgrade where sal=(Select min(sal) from emp) and sal between losal and hisal;
35.查询每个部门号和最低工资,要求该部门的最低工资比20号部门的最低工资高。
一条记录
Select deptno,sal from emp where sal=(select min(sal) from emp where sal>(Select min(sal) from emp where deptno=20));
Select deptno,min(sal) from emp group by deptno having min(sal)> (Select min(sal) from emp where deptno=20);
36.查询每个部门工资最高的员工的姓名、部门号和工资。
Select ename,deptno,sal from emp where (deptno,sal) in (Select deptno,max(sal) from emp group by deptno);
37.查询员工的名字, 部门号, 薪水, 奖金,要求该员工的薪水、奖金都要和部门号30内的某个员工相等。
Select ename,deptno,sal,comm from emp where (sal,nvl(comm,-1)) in (Select sal,nvl(comm,-1) from emp where deptno=30);
38.求没有下属的员工。
select * from emp where empno not in(select distinct mgr from emp where mgr is not null);
select * from emp where empno in (select empno from emp minus select distinct mgr from emp);
39.向emp表中插入一条与SMITH的内容相同的记录,但姓名改为了FAN,雇员号改为8000.
insert into emp (empno,ename,job,mgr,hiredate,sal,comm,deptno) select 8000, 'FAN',job,
mgr,hiredate,sal,comm,deptno from emp where ename='SMITH';
40.将雇员号为8000的雇员提升为部门20的经理,工资增加1000。.
update emp set job = 'manager',sal = sal + 1000,deptno = 20 where empno = '8000';