과목 II SQL 기본 및 활용
제1장 SQL 기본
제9절 조인 (JOIN)
3. Non EQUI JOIN
[준비]
CREATE TABLE SALGRADE (
GRADE TINYINT, LOSAL SMALLINT, HISAL SMALLINT
);
INSERT INTO SALGRADE VALUES ('1','700','1200'); INSERT INTO SALGRADE VALUES ('2','1201','1400'); INSERT INTO SALGRADE VALUES ('3','1401','2000'); INSERT INTO SALGRADE VALUES ('4','2001','3000'); INSERT INTO SALGRADE VALUES ('5','3001','9999'); |
급여등급(SALGRADE) 테이블에는 1급(700 이상 ~ 1200 이하), 2급(1201 이상 ~ 1400 이하), 3급(1401 이상 ~ 2000 이하), 4급(2001 이상 ~ 3000 이하), 5급(3001 이상 ~ 9999 이하)으로 구분한 5개의 급여등급이 존재한다고 가정한다.
책에 있는 정보대로 급여등급(SALGRADE) 테이블을 만들고 데이터를 입력한다.
[예제] Non EQUI JOIN에 대한 샘플은 K-리그 관련 테이블로 구현되지 않으므로, 사원(EMP) 테이블과 가상의 급여등급(SAL_GRADE) 테이블로 설명을 하도록 한다. 어떤 사원이 받고 있는 급여가 어느 등급에 속하는 등급인지 알고 싶다는 요구사항에 대한 Non EQUI JOIN의 사례는 다음과 같다.
SELECT E.ENAME, E.JOB, E.SAL, S.GRADE
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL; |
[실행결과]
![](https://t1.daumcdn.net/cfile/tistory/211F6A435289C55D11)
(14개 행이 영향을 받음)
[예제] 사원 14명 모두에 대해 아래 SQL로 급여와 급여등급을 알아본다.
SELECT E.ENAME 사원명, E.SAL 급여, S.GRADE 급여등급
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL; |
[실행결과]
![](https://t1.daumcdn.net/cfile/tistory/247DEB435289C7FC2E)
(14개 행이 영향을 받음)