데이터베이스/Oracle SQL

오라클 SQL과 PL/SQL ( JOIN 연습문제 - 1 )

동띠기 2021. 8. 18. 20:46
728x90

1. 학생테이블과 학과 테이블을 사용하여 학생이름, 1전공 학과 번호, 1전공 학과 이름을 출력하세요.

단 ANSI / ORACLE 두 방법 모두 작성하세요

 

ORACLE

SELECT S.NAME STU_NAME, S.DEPTNO1 DEPTNO1, D.DNAME DEPT_NAME
FROM STUDENT S, DEPARTMENT D
WHERE S.DEPTNO1 = D.DEPTNO

ANSI

SELECT S.NAME STU_NAME, S.DEPTNO1 DEPTNO1, D.DNAME DEPT_NAME
FROM STUDENT S LEFT OUTER JOIN DEPARTMENT D
ON S.DEPTNO1 = D.DEPTNO

 

2. EMP2 테이블과 P_GRADE 테이블을 조회하여 현재 직급이 있는 사원의 이름과 직급, 현재 연봉, 해당 직급의 연봉의 하한 금액과 상한 금액을 출력하세요.

 

ORACLE

SELECT E.NAME, E.POSITION, E.PAY, PG.S_PAY, PG.E_PAY
FROM EMP2 E, P_GRADE PG
WHERE E.POSITION = PG.POSITION

ANSI

SELECT E.NAME, E.POSITION, E.PAY, PG.S_PAY, PG.E_PAY
FROM EMP2 E JOIN P_GRADE PG
ON E.POSITION = PG.POSITION

 

3. EMP2 테이블과 P_GRADE 테이블을 조회하여 사원들의 이름과 나이, 현재직급, 예상 직급을 출력하세요. 

예상 직급은 나이로 계산하며 해당 나이가 받아야 하는 직급을 의미합니다. 나이는 오늘을 기준으로 하되 소수점 이하는 절삭해서 계산하세요.

 

SELECT 
		E.NAME NAME
	, 	TRUNC((SYSDATE - E.BIRTHDAY)/365) + 1  AGE
	, 	E.POSITION CURR_POSITION
	, 	PG.POSITION
FROM EMP2 E, P_GRADE PG
WHERE TRUNC((SYSDATE - E.BIRTHDAY)/365, 0) BETWEEN PG.S_AGE(+) AND PG.E_AGE(+)
ORDER BY AGE

728x90