고래씌
[Oracle] 5-2. DML(SELECT) - INLINE VIEW(인라인 뷰), WINDOW FUNCTION(순위 매기는 함수) 본문
[Oracle] 5-2. DML(SELECT) - INLINE VIEW(인라인 뷰), WINDOW FUNCTION(순위 매기는 함수)
고래씌 2023. 11. 28. 11:431. 인라인 뷰(INLINE VIEW)
: FROM 절에 서브쿼리를 제시하는 것
=> 서브쿼리를 수행한 결과를 테이블 대신해서 사용함
▶ 인라인 뷰를 주로 사용하는 예)
- TOP-N 분석 : 데이터베이스 상에 있는 자료중 최상위 N개의 자료를 보기 위해 사용하는 기능
▶ ① 보너스 포함 연봉이 3000만원 이상인 사원들의 사번, 이름, 보너스포함연봉, 부서코드를 조회
▶② 인라인 뷰를 사용하여 사원명만 골라내기
☞ 실행순서는 다음과 같다. MAIN의 FROM 절이 먼저 실행되고 안에 있는 FROM절, WHERE, SELECT 순으로 실행된다.
▶ 전 직원 중 급여가 가장 높은 상위 5명(순위, 사원명, 급여)
*ROWNUM : 오라클에서 제공해주는 칼럼, 조회된 순서대로 1부터 순번을 부여해주는 칼럼
....
☞ ORDER BY 로 정렬한 테이블을 가지고 ROWNUM 부여
▶ 각 부서별 평균 급여가 높은 3개의 부서의 부서코드, 평균 급여 조회
① 각 부서별 평균 급여 내림차순 정렬
② 순번 부여, 상위 3개만 추리기
☞ ROWNUM을 이용해서 순위를 매길 수 있다.
☞ 다만, 정렬이 되지 않은 상태에서는 순위를 매겨도 의미가 없으므로 선 정렬 후 순위 매기기를 해야한다.
☞ 즉, 인라인 뷰로 먼저 ORDER BY를 하고 메인쿼리에서 순번을 붙이면 됨
2. WINDOW FUNCTION(순위 매기는 함수)
▶ RANK() OVER(정렬기준)
▶ DENSE_RANK() OVER(정렬기준)
- RANK() OVER(정렬기준) : 공동 1위가 3명이다라고 한다면 그 다음순위는 4위로 하겠다.
- DENSE_RANK() OVER(정렬기준) : 공동 1위가 3명이라면 그 다음 순위는 2위로 하겠다.
- 정렬 기준 : ORDER BY 절(정렬기준 칼럼이름, 오름차순/내림차순)
- SELECT 절에서만 기술이 가능하다.
▶ 사원들의 급여가 높은 순서대로 매겨서 사원명, 급여, 순위 조회 : RANK OVER
☞ 공동 19위 다음 21등이 오는 것 확인
▶ 인라인뷰로 5위까지만 출력하기
'Database > Oracle' 카테고리의 다른 글
[Oracle] 6-2. DDL(CREATE) - DDL 계정 ② (INSERT, 제약 조건) (1) | 2023.11.28 |
---|---|
[Oracle] 6-1. DDL(CREATE) - DDL 계정 ① (CREATE) (0) | 2023.11.28 |
[Oracle] DB 실습문제 2(Function) (0) | 2023.11.27 |
[Oracle] DB 실습문제 1(Basic) (0) | 2023.11.27 |
[Oracle] 5-1. DML(SELECT) - SUBQUERY(서브쿼리) (0) | 2023.11.27 |