728x90
반응형
inline view
from 절에 사용한 서브쿼리를 인라인뷰(inline view)라고 함
view란?
실제 테이블에 근거한 논리적 가상테이블
① inline-view : from절에 사용. 1회용.
② stored view : 데이터베이스 객체로 저장. 재활용 가능
view를 이용하면, 복잡한 쿼리를 간단히 사용할 수 있음
예제)여사원의 사번, 사원명, 부서코드, 성별 출력
--inline view 사용X
select emp_id,
emp_name,
dept_code,
decode(substr(emp_no,8,1), '1', '남', '3', '남', '여') gender
from employee
where decode(substr(emp_no,8,1), '1', '남', '3', '남', '여') = '여';
--inline view 사용
select emp_id,
emp_name,
dept_code,
gender
from (select E.*,
decode(substr(emp_no,8,1), '1', '남', '3', '남', '여') gender
from employee E) --inline view
where gender = '여';
with
서브쿼리에 이름을 붙여 주고, 인라인뷰로 사용시 서브쿼리의 이름으로 from절에 기술할 수 있음
같은 서브쿼리가 여러 번 사용될 경우에 중복 작성을 피할 수 있고 실행 속도도 빨라진다는 장점이 있음
with topn_sal as (select emp_id,
emp_name,
salary
from employee
order by salary desc)
select rownum,
emp_name,
salary
from topn_sal;
rank() over
select 순위, emp_name, salary
from (select emp_name,
salary,
rank() over(order by salary desc) 순위
from employee
order by salary desc);
dense_rank() over
select 순위, emp_name, salary
from (select emp_name,
salary,
dense_rank() over(order by salary desc) 순위
from employee
order by salary desc);
*rank() over는 window함수에서 다시 다룰 예정
반응형
'프로그래밍 > SQL' 카테고리의 다른 글
05.25(DML, DDL의 명령어와 제약조건) (0) | 2020.05.25 |
---|---|
05.22(top-n분석, window함수) (0) | 2020.05.22 |
05.20(SUBQUERY) (0) | 2020.05.20 |
05.19(join의 종류) (0) | 2020.05.19 |
05.18(join) (0) | 2020.05.18 |