반응형
--날짜 데이터를 문자 데이터로 변환 (TO_CHAR)
SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
--문자 데이터를 날짜 데이터로 변환 (TO_DATE)
SELECT TO_DATE('20230328','YYYYMMDD')
FROM DUAL;
--1981년 1월 1월 이후 입사한 사람 데이터 출력
SELECT *
FROM EMP
WHERE HIREDATE > TO_DATE('19810101','YYYYMMDD');
--JONES라는 사원보다 늦게 입사한 사람 출력
SELECT *
FROM EMP
WHERE HIREDATE > (
SELECT HIREDATE
FROM EMP
WHERE ENAME = 'JONES'
);
-- 1. 각 부서 별 입사일이 가장 오래된 사원을 한 명씩 선별해 사원번호, 사원명, 부서번호, 입사일을 출력하라.
SELECT EMPNO, ENAME, DEPTNO, HIREDATE
FROM EMP
WHERE (DEPTNO,HIREDATE) IN (
SELECT DEPTNO,MIN(HIREDATE)
FROM EMP
GROUP BY DEPTNO
);
-- 2. 1981년 5월 31일 이후 입사자 중 커미션이 NULL이거나 0인 사원의 커미션은 500으로 그렇지 않으면 기존 커미션을 출력하라.
SELECT EMPNO,ENAME, JOB,MGR,HIREDATE,SAL,DEPTNO
,CASE WHEN COMM IS NULL THEN 500
WHEN COMM = 0 THEN 500
ELSE COMM
END COMMITION
FROM EMP
WHERE HIREDATE >= TO_DATE('19810531');
-- 3. 1981년 6월 1일 ~ 1981년 12월 31일 입사자 중 부서명이 SALES인 사원의 부서번호, 사원명, 직업, 입사일을 출력하라.
SELECT DEPTNO, ENAME, JOB, HIREDATE
FROM EMP
WHERE HIREDATE BETWEEN TO_DATE('19810601') AND TO_DATE('19811231')
AND DEPTNO = 30;
-- 4. 각 부서별로 1981년 5월 31일 이후 입사자의 부서번호, 부서명, 사원번호, 사원명, 입사일을 출력하시오.
SELECT D.DEPTNO, D.DNAME, E.EMPNO, E.ENAME, E.HIREDATE
FROM EMP E
LEFT JOIN DEPT D ON D.DEPTNO = E.DEPTNO
WHERE E.HIREDATE >= TO_DATE('19810531')
ORDER BY E.DEPTNO;
반응형
'Database' 카테고리의 다른 글
[오라클DB] 시퀀스 SEQUENCE (0) | 2023.03.28 |
---|---|
[오라클DB] 쿼리 연습문제 (0) | 2023.03.28 |
[오라클DB] SYSDATE, TO_CAHR (0) | 2023.03.27 |
[오라클DB] 연습문제2 (0) | 2023.03.27 |
[오라클DB] CASE & DECODE (1) | 2023.03.27 |