티스토리 뷰
VIEW : 가상의 테이블을 생성한다.
복잡한 쿼리를 단순하게 만들 수 있다.
실습1 - LAST_NAME 에 u 가 포함되는 사원들과 동일 부서에 근무하는 사원들의 사번 및 LAST_NAME 을 조회한다.
두 가지 방법으로 풀 수 있다.
첫번째로는 서브쿼리를 이용한 풀이
1
2
3
4
5
6
7
8
9 |
SELECT EMPLOYEE+OD
, LAST_NAME
FROM EMPLOYEES
WHERE DEPARTMENT_ID IN (
SELECT DEPARTMENT_ID
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%u%'
)
; |
cs |
두번째 방법은 View를 이용한
1
2
3
4
5
6
7
8
9
10 |
SELECT DISTINCT EMPLOYEE_ID
, LAST_NAME
FROM (
SELECT DEPARTMENT_ID -- 구분할 수 있는 것을 조회해야 한다.
FROM EMPLOYEES
WHERE LAST_NAME LIKE '%u%'
) U_NAME
, EMPLOYEES E
WHERE U_NAME.DEPARTMENT_ID = E.DEPARTMENT_ID
; |
cs |
실습2 - 회사 전체 평균 연봉 보다 더 버는 사원들 중 -- INLINE VIEW
LAST_NAME 에 u 가 있는 사원들이 근무하는 부서에서 --INLINE VIEW 문제를 끊어서 보면 어떤 것을 INLINE VIEW로 사용할지 쉽게 볼 수 있다.
근무하는 사원들의 사번, LAST_NAME 및 연봉을 조회한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 |
SELECT DISTINCT EMPLOYEE_ID
, LAST_NAME
, SALARY
FROM (
/*LAST_NAME 에 u 가 있는 사원들이 근무하는 부서*/
SELECT DEPARTMENT_ID
FROM (
/* 회사 전체 평균 연봉 보다 더 버는 사원 */
SELECT EMPLOYEE_ID
FROM EMPLOYEES
WHERE SALARY > (
SELECT AVG(SALARY)
FROM EMPLOYEES
)
) EMP2
, EMPLOYEES E
WHERE EMP2.EMPLOYEE_ID = E.EMPLOYEE_ID
AND LAST_NAME = '%u%'
) DEPT
, EMPLOYEES E
WHERE DEPT.DEPARTMENT_ID = E.DEPARTMENT_ID
; |
cs |
'Database > Oracle' 카테고리의 다른 글
[Oracle] DECODE, CASE-WHEN (0) | 2016.02.18 |
---|---|
[Oracle] EXISTS (0) | 2016.02.18 |
[Oracle] 테이블 조인 (0) | 2016.02.17 |
[Oracle] 테이블(Table) 설계 (0) | 2016.02.17 |
[Oracle] 서브쿼리 (0) | 2016.02.16 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- boj
- AlertDialog.Builder
- BFS
- 안드로이드 스튜디오
- list
- 이클립스
- DP
- INSERT
- 자바
- RequestMapping
- servlet
- jsp
- java
- onPostExecute
- REDIRECT
- table
- order by
- Baekjoon Online Judege
- 안드로이드 비콘
- algorithm
- onBackPressed
- sort
- mybatis
- controller
- maven
- 예외처리
- DFS
- Spring
- indexOf
- restfb
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함