Published 2020. 5. 21. 20:00
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
복사했습니다!