標籤:
--1、選擇在部門 30 中員工的所有資訊select * from emp where EMPNO=30;--2、列出職位為(MANAGER)的員工的編號,姓名select EMPNO, ENAME from emp where job=‘MANAGER‘;--3、找出獎金高於工資的員工select * from emp where COMM>SAL;--4、找出每個員工獎金和工資的總和select EMPNO,ENAME,COMM+SAL 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 job not in (‘MANAGER‘,‘CLERK‘) and SAL>=2000;--7、找出有獎金的員工的不同工作 select distinct job from emp; --8、找出沒有獎金或者獎金低於 500 的員工 select * from emp where COMM is null or COMM >500;--9、顯示僱員姓名,根據其服務年限,將最老的僱員排在最前面 select ename,HIREDATE from emp order by HIREDATE desc;--10、找出每個月倒數第三天受雇的員工(如:2009-5-29) select * from emp where EXTRACT(day FROM to_date(sysdate,‘yyyy-mm-dd‘)) - EXTRACT(day FROM to_date(HIREDATE,‘yyyy-mm-dd‘)) =3; --11、找出 25 年前雇的員工 select * from emp where EXTRACT(year FROM to_date(sysdate,‘yyyy-mm-dd‘)) - EXTRACT(year FROM to_date(HIREDATE,‘yyyy-mm-dd‘)) >25; --12、所有員工名字前加上 Dear ,並且名字首字母大寫 select ‘Dear‘||initcap(ename) from emp;--13、找出姓名為 5 個字母的員工 select * from emp where ENAME like ‘_____‘;--14、找出姓名中不帶 R 這個字母的員工 select * from emp where ENAME not like ‘%R%‘;--15、顯示所有員工的姓名的第一個字 select substr(ename,0,1) as name from emp;--16、分組統計各部門下工資>500 的員工的平均工資、 select avg(SAL) from emp where SAL>500 ;--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 in (select max(COMM) from EMP where DEPTNO=30);--20、算出每個職位的員工數和最低工資 select job,count(*) as num,min(SAL) from emp group by job;
View Code
僱員表:記錄了一個僱員的基本資料
EMP(僱員表)
NO 欄位 類型 描述
1 EMPNO NUMBER(4) 僱員編號
2 ENAME VARCHAR2(10) 表示僱員姓名
3 JOB VARCHAR2(9) 表示工作職位
4 MGR NUMBER(4) 表示一個僱員的領導編號
5 HIREDATE DATE 表示僱傭日期
6 SAL NUMBER(7,2) 表示月薪,工資
7 COMM NUMBER(7,2) 表示獎金或傭金
8 DEPTNO NUMBER(2) 表示部門編號
部門表:表示一個部門的具體資訊
DEPT(部門表)
NO 欄位 類型 描述
1 DEPTNO NUMBER(2) 部門編號
2 DNAME VARCHAR2(14) 部門名稱
3 LOC VARCHAR2(13) 部門位置
獎金錶:表示一個僱員的工資及獎金。
BONUS(獎金錶)
NO 欄位 類型 描述
1 ENAME VARCHAR2(10) 僱員姓名
2 JOB VARCHAR2(9) 僱員工作
3 SAL NUMBER 僱員工資
4 COMM NUMBER 僱員獎金
一個公司是有等級制度,用此表表示一個工資的等級
SALGRADE(工資等級表)
NO 欄位 類型 描述
1 GRADE NUMBER 等級名稱
2 LOSAL NUMBER 此等級的最低工資
3 HISAL NUMBER 此等級的最高工資
題目:
1、 選擇在部門 30 中員工的所有資訊
2、列出職位為(MANAGER)的員工的編號,姓名
3、找出獎金高於工資的員工
4、找出每個員工獎金和工資的總和
5、找出部門 10 中的經理(MANAGER)和部門 20 中的普通員工(CLERK)
6、找出部門 10 中既不是經理也不是普通員工,而且工資大於等於2000 的員工
7、找出有獎金的員工的不同工作
8、找出沒有獎金或者獎金低於 500 的員工
9、顯示僱員姓名,根據其服務年限,將最老的僱員排在最前面
10、找出每個月倒數第三天受雇的員工(如:2009-5-29)
11、找出 25 年前雇的員工
12、所有員工名字前加上 Dear ,並且名字首字母大寫
13、找出姓名為 5 個字母的員工
14、找出姓名中不帶 R 這個字母的員工
15、顯示所有員工的姓名的第一個字
16、分組統計各部門下工資>500 的員工的平均工資、
17、統計各部門下平均工資大於 500 的部門
18、算出部門 30 中得到最多獎金的員工獎金
19、算出部門 30 中得到最多獎金的員工姓名
20、算出每個職位的員工數和最低工資
Oracle sql語句練習