오늘보다 더 나은 내일의 나에게_

Oracle 21/12/28 본문

Oracle

Oracle 21/12/28

chan_96 2022. 1. 12. 21:46
728x90

실행 순서

SELECT------------5
FROM-------------1
WHERE-----------2
GROUP-----------3
HAVING----------4
ORDER BY--------6

 

 

실습 예제

더보기
18. 회사 전체의 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를 출력
18번 예제
19. 각 직업별, 최대 급여, 최소 급여, 급여 총 합 및 평균 급여를 출력
최대 급여는 MAX, 최소 급여는 MIN, 급여 총합은 SUM  및 평균 급여는 AVG로 출력, 직업을 오름차순 정렬
19번 예제
20. 동일한 직업을 가진 사원들의 총 수를 출력
20번 예제
21. 매니저로 근무하는 사원들의 총 수를 출력
**중복제거 DISTINCT**
21번 예제
22. 사내의 최대 급여 및 최소 급여의 차이를 출력
22번 예제

 

23. 매니저의 사번 및 그 매니저 밑 사원들 중 최소 급여를 받는 사원의 급여를 출력
-매니저가 없는 사람들은 제외
-최소 급여가 5000 미만인 경우는 제외
-급여 기준 역순으로 조회
더보기
더보기

**매니저가 없는 사람은 제외 => IS NOT NULL** 
(일반조건은 WHERE절)

23번 예제

 

24. 부서 명, 부서위치 ID, 각 부서 별 사원 총 수, 각 부서 별 평균 급여를 출력 / 부서위치를 오름차순으로 출력
더보기
24번 예제

 

EX) Abel이라는 사원이 받는 급여보다 더 많은 급여를 받는 사원의 이름과 급여를 출력
=> 1. Abel 급여 검색
=> 2. 결과 후 다시 검색

**서브 쿼리 사용 시 한 번에 조회 가능**
서브쿼리 사용 예제

 

서브 쿼리

=> 특정 값을 모르고 있을 때 사용

 

-서브 쿼리가 먼저 실행되고 메인 쿼리가 실행된다

-SELECT, FROM, WHERE, HAVING, ORDER BY절에 사용 가능(GROUP BY 사용 불가)

-WHERE과 HAVING 절에서는 값의 역할을 대체한다

-서브 쿼리 개수제한은 없다

 

 

서브 쿼리 작성 시

1. 뭐를 모르는지 찾는다! (Abel의 급여)

2. 모르는 걸 서브 쿼리를 통해 찾는다!

(모르는 값을 서브 쿼리의 SELECT LIST절에 어떤 컬럼으로 찾을 것 인지 결정) (abel급여 -> 서브 쿼리에서 SALARY)

3. 누가 받을 것인지 결정 => 서브 쿼리가 넘겨준 값을 메인 쿼리의 어떤 컬럼이 받을 것인지 결정 (서브 쿼리에서 SALARY -> 메인 SALARY)

4. 서브 쿼리의 결과를 넘겨주는 연산자를 결정 (SALARY > SALARY)

 

*서브 쿼리의 결과와 메인 쿼리의 받는 컬럼의데이터 타입은 반드시 동일해야 함

*단, 컬럼 이름은 틀려도 상관없음

 

 

서브 쿼리 사용 지침

- 서브 쿼리를 괄호로 묶음

- 비교 조건의 오른쪽에 서브 쿼리를 넣음

-WHERE절과 HAVING절 서브 쿼리에서는 ORDER BY 절은 사용하지 않는 것이 좋다!

-단일 행 서브 쿼리에는 단일 행 연산자를 사용하고 다중 행 서브 쿼리에는 다중 행 연산자(IN과 같은 복수 연산자 사용)를 사용

서브 쿼리 예제

 

다중 행 서브 쿼리

연산자 의미
IN 목록에 있는 동일한 값
ANY 값을 서브 쿼리에 의해 반환된 각 값과 비교
> ANY (최소값 보다 큰값)
< ANY (최대값 보다 작은값)
ALL 값을 서브쿼리에 의해 반환된 모든 값과 비교
> ALL (모두중 최대값 보다 큰값)
< ALL (모두중 최솟값 보다 작은값)

 

실습 예제

25. Zlotkey와 동일한 부서에 근무하는 다른 모든 사원들의 사번 및 고용 날짜를 출력
더보기
25번 예제
26. 회사 전체 평균 급여보다 더 급여를 많이 받는 사원들의 사번 및 이름을 출력
더보기
26번 예제
27. 이름에 u가 포함되는 사원들과 동일 부서에 근무하는 사원들의 사번 및 이름을 출력
28. 시애틀에 근무하는 사람 중 커미션을 받지 않는 모든 사람들의 이름, 부서 명, 지역 ID를 출력

더보기

**테이블 조인은 적게 쓰는 게 좋다**

28번 예제
728x90

'Oracle' 카테고리의 다른 글

Oracle 21/12/30  (0) 2022.01.12
Oracle 12/12/29  (0) 2022.01.12
Oracle 21/12/27  (0) 2022.01.12
Oracle 21/12/24  (0) 2022.01.12
Oracle 21/12/23  (0) 2022.01.12
Comments