SQL语句表操作

来源:百度知道 编辑:UC知道 时间:2024/06/04 18:54:04
有如下表:
emp员工表(empno员工号白, ename员工姓名 job工作 sal薪金 comm佣金 deptno部门编号)
empno ename job sal comm deptno
7369 SMITH CLERK 800 200 20
7499 ALLEN SALESMAN 1600 0 30
7521 WARD SALESMAN 1250 300 30
7566 JONES MANAGER 2000 300 20
7654 MARTIN SALESMAN 2500 300 30
7698 BLAKE MANAGER 2800 200 30
7782 CLARK MANAGER 3200 400 10
7788 SCOTT ANALYST 1800 300 20
7839 KING PRESIDENT 2700 0 10
7844 TURNER SALESMAN 3500 500 30
7876 ADAMS CLERK 1500 300 20

问题
1.查询每个部门工资最高的员工的姓名、部门号和工资.
2.向emp表中插入一条与SMITH的内容相同的记录,但姓名改为’FAN’,雇员号改为8000.
3.将部门号为10的表示为'开发一部',20的表示'开发二部',30的表示'开发三部'

全用SQL的语句实现,不用存储过程。

1: SELECT a.ename,a.deptno,a.sal+a.comm FROM
emp a,
(
SELECT MAX(sal+comm) FROM emp GROUP BY deptno
) b
WHERE a.sal+a.comm = b.sal+b.comm
GROUP BY deptno

2: INSERT INTO emp SELECT 8000,'FAN',job,sal,comm,deptno
FROM emp WHERE ename='SMITH'

3: SELECT empno,ename,job,sal,comm,
CASE
WHEN deptno = 10 THEN '开发一部'
WHEN deptno = 20 THEN '开发二部'
WHEN deptno = 30 THEN '开发三部'
END
FROM emp

用什么数据库?
oracle:
1、select * from emp where (sal,deptno) in
(select max(sal),deptno from emp group by deptno)

2、insert into emp select 8000,' FAN',job,sal,comm,deptno from emp where ename='SMITH'

3、select *,decode(deptno,'10','开发一部','20','开发二部','30','开发三部') form emp