oracle基础练习(一)
程序员文章站
2024-01-29 23:07:34
-- 1、找出每个月倒数第三天受雇的员工
-- 第一步:获取每个月的最后一天
SELECT LAST_DAY(Trunc(HIREDATE, 'MONTH...
-- 1、找出每个月倒数第三天受雇的员工 -- 第一步:获取每个月的最后一天 SELECT LAST_DAY(Trunc(HIREDATE, 'MONTH')) FROM EMP; --第二步:获取倒数三天 SELECT LAST_DAY(HIREDATE)-2 FROM EMP; -- 第四步:查询满足条件的人信息 SELECT * FROM EMP WHERE HIREDATE = LAST_DAY(HIREDATE)-2 --2、找出35年前的雇员 --第一步: 计算所有员工的工龄 --计算所有员工的工龄 方法一 SELECT E.EMPNO,E.ENAME,FLOOR(MONTHS_BETWEEN(SYSDATE,E.HIREDATE)/12) 工龄 FROM EMP E; --计算所有员工的工龄 方法二 SELECT E.EMPNO,E.ENAME,FLOOR((SYSDATE-E.HIREDATE)/365) 工龄 FROM EMP E; ----计算所有员工的工龄 方法三 SELECT E.EMPNO,E.ENAME, EXTRACT(YEAR FROM SYSDATE)-EXTRACT(YEAR FROM E.HIREDATE) 工龄 FROM EMP E; -- 工龄满足条件 SELECT E.EMPNO,E.ENAME FROM EMP E WHERE EXTRACT(YEAR FROM SYSDATE)-EXTRACT(YEAR FROM E.HIREDATE) = 35 -- 3、给所有员工名字前加dear,并且名字首字母大写,其余小写 --第一步:查询出名字 SELECT E.ENAME FROM EMP E; -- 第二步,加dear SELECT CONCAT('deal_',E.ENAME) FROM EMP E; --第三步:首字母大写其余小写 SELECT INITCAP(CONCAT('deal_',E.ENAME)) NEWNAME FROM EMP E; --4、找出姓名为五个字的员工 --第一步 查出员工姓名长度 SELECT LENGTH(E.ENAME) name_legth FROM EMP E; --第二步; 查出满足条件的员工信息 SELECT e.ename FROM EMP E where LENGTH(E.ENAME) = 5; -- 5、找不姓名中不带R的员工 select ename from emp where ename not like '%R%' --6、获取所有员工姓名的第一个字 SELECT substr(E.ENAME,1,1) FROM EMP E; --7 计算员工入职天数(四舍五入) --第一步:计算员工入职天数 SELECT SYSDATE - E.HIREDATE FROM EMP E; -- 第二步:四舍五入 SELECT ROUND(SYSDATE - E.HIREDATE) FROM EMP E; --8 找出二月份入职的员工 --第一步:找出员工入职的月份 SELECT extract(month from E.HIREDATE) FROM EMP E; --第一步:找出员工入职的月份为2 的员工信息 SELECT e.ename FROM EMP E where extract(month from E.HIREDATE) = 2; --9、列出至少有一个员工的所有部门 --第一步列出所有部门编号 SELECT DEPTNO FROM EMP -- 第二步 查询出满足条件的部门 SELECT * FROM DEPT WHERE DEPTNO IN (SELECT DEPTNO FROM EMP) --10、列出所有员工的姓名及其直接上级的姓名。 --第一步 :找出有上级的员工 SELECT EMPNO, ENAME,emp.* FROM EMP WHERE MGR IN (SELECT EMP.EMPNO FROM EMP); --第二步:列出所有员工的姓名及其直接上级的姓名 SELECT A.EMPNO, A.ENAME, B.ENAME manager FROM EMP A, EMP B WHERE A.MGR = B.EMPNO;