您的位置:首页 > 数据库 > Oracle

Oracle练习三(亲测有效)

2019-01-23 21:14 387 查看

–1.求1981年各个月入职的员工个数
SELECT TO_CHAR(HIREDATE,‘MM’) 月份, COUNT(EMPNO) 人数 FROM EMP WHERE EXTRACT(YEAR from HIREDATE)=1981 GROUP BY TO_CHAR(HIREDATE,‘MM’) ORDER BY TO_CHAR(HIREDATE,‘MM’);
–2.显示各种职位的最低工资
SELECT job, min(SAL) FROM EMP GROUP BY JOB ;
–01.查询每个员工的编号、姓名、职位。
SELECT EMPNO,ENAME,JOB FROM EMP;
–02.查询每个员工的职位,使用 DISTINCT 消除掉重复行记录。
SELECT DISTINCT JOB FROM EMP;
–03.计算每个员工的编号、姓名、基本年薪。年薪=(基本工资+奖金)*12,
SELECT EMPNO,ENAME,(NVL(COMM,0)+SAL)*12 FROM EMP;
–04.每个员工每个月公司会补贴饭食 200 元,交通补助 300 元,计算年薪。
SELECT ENAME,(NVL(COMM,0)+SAL+500)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>=1500 AND SAL<=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>0;
–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 ;
–19.要求查询所有员工的信息,按照雇佣日期由先后排序。
SELECT * FROM EMP ORDER BY HIREDATE;
–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 COMM>SAL;
–24.查询出奖金高于薪金的 60%的员工。
SELECT * FROM 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 e1.ENAME 姓名,e1.JOB 职位,e2.ENAME 领导姓名 FROM emp e1,emp e2 WHERE e1.MGR=e2.EMPNO;
–28.查询出所有员工的编号、姓名及其领导的编号、姓名,显示的结果按其领导年工资的降序排列。 //自连接
SELECT e1.EMPNO 编号, e1.ENAME 姓名,e2.EMPNO 领导编号,e2.ENAME 领导姓名 FROM emp e1,emp e2 WHERE e1.MGR=e2.EMPNO ORDER BY e2.SAL DESC;
–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,(NVL(COMM, 0)+SAL)*12 年薪 ,DNAME FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO ORDER BY (NVL(COMM, 0)+SAL)12 DESC;
–32.查询出员工的最高和最低工资。
SELECT MIN(SAL),MAX(SAL) FROM EMP;
–33.查询出每个部门的人数、平均工资,显示部门编号,人数及平均工资
SELECT DEPTNO,COUNT() ,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 e1.ENAME,e1.JOB,e2.ENAME,e1.DEPTNO,e2.DEPTNO FROM EMP e1,EMP e2 WHERE e1.EMPNO>e1.MGR AND e1.MGR=e2.EMPNO;
–37.查询出至少有一个员工的所有部门的名称,并统计出这些部门的平均工资、最低工资、最高工资。
select dname,avg(sal),min(sal),max(sal) from emp e join dept d on e.DEPTNO=d.DEPTNO GROUP BY dname having count(EMPNO)>=1;
–38…查询工资比 smith 更高的全部员工信息。
SELECT * FROM EMP WHERE SAL>(SELECT sal FROM EMP WHERE ename=‘SMITH’);
–39.查询工资和职位和 smith 相同的所有员工信息。
SELECT * FROM EMP WHERE SAL=(SELECT sal FROM EMP WHERE ename=‘SMITH’) AND JOB=(SELECT JOB FROM EMP WHERE ename=‘SMITH’);
–40.显示人数最少的部门的部门号,该部门下的所有员工的编号,姓名,总收入(工资+奖金)
select empno 编号,ename 姓名,sal+nvl(comm,0) 总收入 from emp where deptno=
(select t1.DEPTNO from (select deptno,count(empno) num1 from emp group by deptno) t1
join
(select min(count(empno)) num2 from emp GROUP BY deptno) t2 on t1.num1=t2.num2)
–41.列出至少有三个员工的所有部门的部门编号,名称及员工人数。
select d.deptno,dname,count(e.empno) from dept d join emp e on d.deptno=e.DEPTNO
GROUP BY d.deptno,dname having count(e.DEPTNO) >=3
–42.列出职位为“CLERK”的员工姓名和其所在部门名称,部门人数:
select ename,dname, t.total from emp e, dept d,
(select deptno,count(empno) total from emp GROUP BY deptno) t
where e.deptno=d.DEPTNO and e.deptno=t.deptno and e.job=‘CLERK’;

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: