-
[ORACLE] OUTER JOIN 예제DATABASE 2019. 6. 13. 16:38
* 분야별로 지원자 수가 없는 과목들 추출하기*
A : 전 과목 테이블 (기준)
B : 지원한 과목 테이블
(lec_cd : 과목코드)
1. 전 과목 테이블에서 분야별로 과목 추출하기
SELECT
grade,
col_cd,
lec_cd
FROM A
group by grade, col_cd, lec_cd
2. 분야별로 추출한 과목테이블(AA)과 지원한 과목 테이블(B) OUTER JOIN
-> 지원한 과목 테이블(BB)에서 지원한 과목이 없는 데이터까지 추출
SELECT
aa.grade,
aa.col_cd,
aa.lec_cd
(SELECT
grade,
col_cd,
lec_cd
FROM A
group by grade, col_cd, lec_cd ) aa, B bb
where aa.grade = bb.grade (+)
and aa.col_cd = bb.col_cd (+)
and aa.lec_cd = bb.lec_cd (+)
group by aa.grade, aa.col_cd, aa.lec_cd
order by aa.grade, aa.col_cd, aa.lec_cd
3. 지원한 과목이 없는 데이터
HAVING /*group by의 조건절*/
SUM( CASE WHEN lec_cd is not null then 1 else 0 end )
-> lec_cd가 null 이면 0 null이 아니면 1
[ SELECT
aa.grade,
aa.col_cd,
aa.lec_cd
(SELECT
grade,
col_cd,
lec_cd
FROM A
group by grade, col_cd, lec_cd ) aa, B bb
where aa.grade = bb.grade (+)
and aa.col_cd = bb.col_cd (+)
and aa.lec_cd = bb.lec_cd (+)
group by aa.grade, aa.col_cd, aa.lec_cd
having sum(case when lec_cd is not null then 1 else 0 end) < 1 /*lec_cd가 없는 데이터만 추출하기 위해*/
order by aa.grade, aa.col_cd, aa.lec_cd ]
'DATABASE' 카테고리의 다른 글
[ORACLE] UPDATE문+SELECT문 (0) 2019.09.11 [ORACLE] LEFT OUTER JOIN 개념 (0) 2019.09.11 [ORACLE] 이중 CASE문 예제 (0) 2019.02.14 [ORACLE] 계층형 쿼리 (0) 2019.01.10 [ORACLE] 특정문자의 개수 알아보기 (0) 2018.12.18