oracle基礎練習(一)
阿新 • • 發佈:2019-01-26
-- 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;