oracle基础练习(一)

-- 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;
(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐