SELECT*FROM EMP;
–01.查询每个员工的编号、姓名、职位。
SELECT EMPNO ,ENAME,JOB FROM EMP;
–02.查询每个员工的职位,使用 DISTINCT 消除掉重复行记录。
SELECT DISTINCT(JOB) FROM EMP ;
–03.计算每个员工的编号、姓名、基本年薪。年薪=(基本工资+奖金)*12,
SELECT EMPNO,ENAME,(SAL+NVL(COMM, 0))*12 年薪 FROM EMP;
–04.每个员工每个月公司会补贴饭食 200 元,交通补助 300 元,计算年薪
SELECT EMPNO,ENAME,((SAL+NVL(COMM, 0))+200+300)*12 年薪 FROM EMP;
–05.查询基本工资高于 2000 的全部员工信息。
SELECT *FROM EMP WHERE SAL>2000;
–06.查询出除了smith以外的员工信息。
SELECT * FROM EMP WHERE NOT ENAME=‘SMITH’;
–07.查询出所有不是办事员( CLERK)的员工详细信息。
SELECT *FROM EMP WHERE NOT JOB=‘CLERK’;
–08.查询出所有销售员(SALESMAN)的基本信息,并且要求销售人员的工资高于 1300。
SELECT *FROM EMP WHERE JOB=‘SALESMAN’ AND SAL>1300;
–09.查询出工资范围在 1500~3000 之间的全部员工信息(包含 1500 和 3000)
SELECT *FROM EMP WHERE SAL BETWEEN 1500 AND 3000;
–10.查询出所有经理或者是销售人员的信息,并且要求这些人的基本工资高于 1500。
SELECT *FROM EMP WHERE JOB=‘MANAGER’ or JOB=‘SALESMAN’ AND sal>1500;
–11.要求查询出所有在 1981 年入职的员工信息(使用日期函数)。
SELECT *FROM EMP WHERE EXTRACT(YEAR FROM HIREDATE)=1981;
–12.查询所有领取奖金的员工信息(comm 不为空)。
SELECT *FROM EMP WHERE COMM is NOT NULL;
–13.查询所有领取奖金高于100的员工信息。
SELECT *FROM EMP WHERE COMM >100;
–14.查询出员工编号是 7369、7566、9999 的员工信息。
SELECT *FROM EMP WHERE EMPNO=7369 OR EMPNO=7566 OR EMPNO=9999
–15.查询出所有姓名是以 A 开头的全部员工信息。
SELECT *FROM EMP WHERE ENAME like ‘A%’;
–16.查询出员工姓名第二个字母是 M 的全部员工信息。
SELECT *FROM EMP WHERE ENAME like ‘_M%’;
–17.查询出员工姓名任意位置上包含字母 A 的全部员工信息。
SELECT*FROM EMP WHERE ENAME like ‘%A%’
–18.查询出所有员工的信息,要求按照工资排序。
SELECT *FROM EMP ORDER BY SAL DESC;
–19.要求查询所有员工的信息,按照雇佣日期由先后排序。
SELECT *FROM EMP ORDER BY HIREDATE ASC;
–20.查询全部员工信息,按照工资由高到低排序,如果工资相同,则按照雇佣日期由先到后排序
SELECT *FROM EMP ORDER BY SAL DESC , HIREDATE ASC;
–21.查询部门编号30 中的所有员工的编号,姓名,工资,职位,部门编号,部门名称。
SELECT EMPNO,ENAME,SAL,JOB,EMP.DEPTNO,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO and EMP.DEPTNO=30;
–22.查询出所有办事员(CLERK)的姓名,编号和部门编号。
SELECT ENAME,EMPNO ,EMP.DEPTNO FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO AND JOB=‘CLERK’;
–23.查询出奖金高于薪金的员工。
SELECT*FROM EMP where sal<COMM;
–24.查询出奖金高于薪金的 60%的员工。
SELECTFROM EMP WHERE COMM>(SAL0.6);
–25.查询出领取奖金的员工的不同职位,显示员工编号,姓名,职位。
SELECT EMPNO,ENAME,JOB FROM EMP WHERE COMM>=0;
–26.查询出名字不带有“R”的员工的姓名。
SELECT ENAME FROM EMP WHERE ENAME NOT like ‘%R%’;
–27.查询出每个员工的姓名、职位、领导姓名。
SELECT m1.ENAME 员工姓名,m1.JOB 员工职位,m2.ENAME 领导姓名 FROM EMP m1,EMP m2 WHERE m1.MGR=m2.EMPNO
–28.查询出所有员工的编号、姓名及其领导的编号、姓名,显示的结果按其领导年工资的降序排列。
SELECT m1.EMPNO 员工标号,m1.ENAME 员工姓名,m2.EMPNO 领导编号,m2.ENAME 领导姓名 FROM EMP m1,EMP m2 ORDER BY m2.SAL*12 ASC;
–29.查询出在销售部(SALES)工作的员工姓名、基本工资、雇佣日期、部门名称。
SELECT ENAME,SAL,HIREDATE,DNAME FROM EMP,DEPT where EMP.DEPTNO=DEPT.DEPTNO and JOB=‘SALESMAN’;
–30.查询出所有员工的姓名、部门名称和工资。
SELECT ENAME,DNAME,SAL FROM EMP,DEPT where EMP.DEPTNO=DEPT.DEPTNO
–31.查询出所有员工的姓名,年薪,所在部门名称,按年薪从低到高排序。
SELECT ENAME,(SAL+NVL(COMM, 0))*12 年薪,DNAME FROM EMP,DEPT where EMP.DEPTNO=DEPT.DEPTNO ORDER BY (SAL+NVL(COMM, 0))*12 DESC;
–32.查询出员工的最高和最低工资。
SELECT MAX(SAL) 最高工资,MIN(SAL) 最低工资 FROM EMP;
–33.查询出每个部门的人数、平均工资,显示部门编号,人数及平均工资
SELECT DEPTNO,COUNT(DEPTNO),AVG(SAl) FROM EMP GROUP BY DEPTNO;
–34.查询出每种职位的最高和最低工资。
SELECT JOB,MAX(SAL),MIN(SAL) FROM EMP GROUP BY JOB;
–35.查询平均工资高于 2000 的职位,以及从事此职位的员工总人数、平均工资。
SELECT JOB,COUNT(JOB) AVG(SAL) FROM EMP GROUP BY JOB
HAVING AVG(SAL)>2000;
–36.查询员工编号大于其领导编号的每个员工的姓名、职位、领导名称。
SELECT
t1.ename, t1.job, t2.ename, t1.deptno ,t2.deptno
FROM
emp t1,emp t2
WHERE t1.empno>t1.mgr AND t1.mgr = t2.empno;
–37.查询出至少有一个员工的所有部门的名称,并统计出这些部门的平均工资、最低工资、最高工资。
SELECT
t1.DEPTNO, t2.DNAME, AVG(sal),MIN(sal),MAX(sal)
FROM
emp t1,dept t2
WHERE
t1.DEPTNO = t2.DEPTNO
GROUP BY
t2.DNAME;
–38…查询工资比 smith 更高的全部员工信息。
SELECT * FROM emp,dept
WHERE
emp.DEPTNO = dept.DEPTNO AND
sal>(SELECT SAL FROM emp WHERE ename = ‘smith’);
–39.查询工资和职位和 smith 相同的所有员工信息。
SELECT * FROM emp,dept
WHERE
emp.DEPTNO = dept.DEPTNO AND
job=(SELECT job FROM emp WHERE ename = ‘SMITH’);
–40.显示人数最少的部门的部门号,该部门下的所有员工的编号,姓名,总收入(工资+奖金)