어제보다 더 나은 나

DBMS(오라클) : HAVING 절, JOIN 함수 본문

데이터분석 공부/DBMS 공부

DBMS(오라클) : HAVING 절, JOIN 함수

확인해볼까 2022. 7. 1. 15:01

* HAVING 절 : GROUP BY 절에 의해 생성된 그룹을 대상으로 조건을 적용

 

 

# 예제 : 사원 테이블에서 평균 급여가 1900이상인 부서의 부서번호, 부서별 평균 급여를 출력하세요.

 

# 예제 : 1000 이상 급여를 받는 사원들에 대해 부서별 평균 급여를 구한 후, 부서별 평균 급여가 1900 이상인 부서의 부서번호, 부서별 평균 급여를 출력하세요. 

 

 

 

* HAVING 절과 WHERE 절의 성능 차이

=> HAVING 절 : 내부 정렬 과정에 의해 그룹화된 결과 집합에 대해 검색 조건 실행

GROUP BY 절에 의해 전체 행 집합을 먼저 정렬한 후에 HAVING 절을 적용하므로 비효율적

 

=> WHERE 절 : 그룹화하기 전에 먼저 검색 조건 실행

불필요한 행을 GROUP BY 절에 의한 그룹화 과정 전에 미리 제외하므로 내부 정렬에 필요한 행의 수를 줄여 효율적

 


* JOIN (조인) : 하나의 SQL 쿼리에 의해 여러 테이블에 저장된 데이터를 한번에 조회할 수 있는 기능 (2개 이상의 테이블을 결합한다는 의미)

# 예제 : 교수 이름, 급여, 학과 번호, 학과 이름, 학과 위치를 출력하세요

몸무게가 80kg 이상인 학생의 정보를 출력하여라.

 

 

 

# 예제 : 사원테이블에서 DALLAS에 근무하는 사원의 사번, 이름, 부서번호, 부서이름, 근무지를 출력하세요.

문제_답안

 

# 예제 : 학생의 이름, 학번, 학과번호, 지도교수 번호, 교수이름을 출력하세요.

문제_답안

 

 

# 예제 :학생의 이름, 학번, 학과번호, 지도교수 번호, 교수이름, 학과이름, 학과 위치를 출력하세요.

문제_답안

 

* CROSS JOIN : WHERE 절에서 조인 조건절을 생략하거나 잘못 설정한 경우, 두 개 이상의 테이블에서 연결 가능한 행을 모두 결합

카티션 곱 = CROSS JOIN

 

 

* EQUI JOIN : 조인대상 테이블에서 공통 칼럼 비교를 통해 같은 값을 가지는 행을 연결하여 결과를 생성하는 조인방법

 

WHERE 절에 연결 칼럼을 명시

* EQUI JOIN - NATURAL JOIN

 

* EQUI JOIN - JOIN ~ USING : USING 절에 조인 대상 칼럼을 지정

(칼럼 이름은 조인 대상 테이블에서 동일한 이름으로 정의되어 있어야 함)

 

위 쿼리와 이 쿼리는 동일한 표현

 

* NON-EQUI JOIN : '<', BETWEEN a AND b 와 같이 '=' 조건이 아닌 연산자를 사용

2개의 테이블 중 공통의 칼럼이 없기에 NON-EQUI JOIN을 사용

 

* OUTER JOIN : (+), OUTER JOIN 연산자는 NULL이 존재하는 칼럼 쪽에 표시

=> 다른 조건과 OR 연산자로 결합 불가

=> OUTER JOIN에서는 IN 연산자를 사용 불가

 

 

 

*  LEFT OUTER JOIN : FROM 절의 왼쪽 테이블이 NULL을 가질 경우, 사용

=> WHERE 절의 오른편(+) 기호를 추가한 것과 동일

* RIGHT OUTER JOIN : FROM 절의 오른쪽 테이블이 NULL을 가질 경우, 사용

=> WHERE 절의 왼편(+) 기호를 추가한 것과 동일

* FULL OUTER JOIN : LEFT OUTER JOIN + RIGHT OUTER JOIN

 

* SELF JOIN : 하나의 테이블 내에 있는 칼럼끼리 연결하는 조인이 필요한 경우

 

WHERE 절을 이용한 SELF JOIN 방법

 


# 예제 1 : 총 급여가 $5,000이 넘는 각 JOB에 대해 JOB과 월급 총액을 출력하세요. (단, PRESIDENT를 제외시키고, 월급 총액별으로 정렬)

문제_답안

 

 

2. Shipping부서에 근무하는 사원에 대해 last_name, job_id, 부서번호, 부서이름을 last_name 순으로 출력하세요. (결과-45건)

문제_답안

 

3. south san francisco에서 근무하는 모든 사원에 대해 last_name, job, 부서번호, 부서이름, 부서위치(city)를 출력하세요. (결과-45건)

문제_답안

 

4. 사원의 이름과 사원 번호 그리고 관리자 이름과 관리자 번호를 출력하세요.

문제_답안

 

Comments