조인 시 연결하는 키 값을 어떻게 연결하느냐에 따라,
- Equi 조인 : join 시 연결하는 키 값이 서로 같은 경우( =로 연결)
- Non Equi 조인 : 키 값으로 연결할 때, =가 아닌 다른 연산자를 사용 (between, >, >=, <, <=)
between 조인 : history 데이터 다룰 때 유용
[예시]📍각 직원의 급여 '등급'을 추출하기 위해 between을 사용하여 Join
-- 직원정보와 급여등급 정보를 추출.
select e.*, s.grade as sal_grade, s.losal, s.hisal
from emp e
join salgrade s on e.sal between s.losal and s.hisal ;
▶︎ emp 테이블에 직원 급여 정보가 있음 : 예) sal = 800
▶︎ sal_grade 테이블에 losal, hisal과 그 사이 값의 등급을 나타내는 grade 컬럼이 있음.
(예로, losal이 100 hisal 500이면 100~500 사이의 급여를 받는 사람의 grade = 1)
[기타] cross 조인
▶︎ 조인하는 컬럼없이, 두 테이블간 가능한 모든 연결을 결합(두 테이블 간 키 값을 모두 곱한 결과가 나옴) >> 고수의 영역
▶︎ 예시 쿼리:
with
temp_01 as
(
select 1 as rnum
union all
select 2 as rnum
)
select *
from dept a
cross join temp_01 b;
temp_01 이라는 임시 테이블을 생성 : rnum이라는 컬럼에 1, 2를 차례로 생성함.
실제 쿼리 작성시 temp_01을 dept 테이블과 cross join 하면,
dept 테이블의 모든 키 값이 두 배가 되어 나타남.
728x90
'SQL' 카테고리의 다른 글
[SQL 시간 정보 타입] Date, Timestamp, interval (1) | 2023.03.21 |
---|---|
[SQL] WITH 구문 (0) | 2023.03.18 |
[coalesce() 함수] 결측치 처리하기 (0) | 2023.03.18 |
[concat 함수] 문자열 더하기 (0) | 2023.03.18 |
[to_date() 함수] 문자열을 날짜데이터로 (0) | 2023.03.18 |