Oracle DB view, 문제풀이

강정우·2022년 7월 12일
0

DB

목록 보기
26/30
post-thumbnail

문제 1

  • 부서 50의 사원에 대한 연봉 정보를 포함하는 뷰 salvu50을 생성합니다.
create view salvu50
as select employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SLARY
from employees
where department_id = 50
/

문제 2

  • TOP-N 분석
  • 급여를 많이 받는 상위 3사람을 뽑아라
select rownum, last_name, salary
from employees
where rownum < 4

//result

    ROWNUM LAST_NAME                SALARY
---------- -------------------- ----------
         1 King                      24000
         2 Kochhar                   17000
         3 De Haan                   17000

// rownum == 출력된 행의 번호를 return. 결과값
select rownum, last_name, salary
from employees
where rownum > 4

//result
no row result

rownum은 행이 출력되고 나서 실행됨.
따라서 rownum은 항상 이하나 미만만 가능 이상이나 초과는 불가
하위 3명은?

select last_name, salary
from (
select last_name, salary
from employees
order by salary)
where rownum < 4

//result

LAST_NAME                SALARY
-------------------- ----------
Olson                      2100
Markle                     2200
Philtanker                 2200

ascending은 하행
desecding은 top-N 분석
  • 방법은 인라인 뷰를 통하여 orderby된 table을 가상으로 만든 후
    그것을 토대로 조건을 뽑아냄.

문제 3

  • 인라인 뷰
  • 가장 먼저 입사한 4명의 사원의 이름과 입사일을 구하시오.
  1  select last_name, hire_date		
  //이것들은 원래 table이 아니라 
  가상의 인라인 뷰의 table에서 갖고온거심.
  2  from (
  3  select last_name, hire_date
  4  from employees
  5  order by hire_date)
  6* where rownum < 5

SQL> // result

LAST_NAME            HIRE_DAT
-------------------- --------
De Haan              01/01/13
Mavris               02/06/07
Gietz                02/06/07
Higgins              02/06/07

문제 4

  • 그룹함수를 포함하는 복합 뷰
  • 평균급여가 가장 많은 3개의 부서의 부서 번호와 평균 급여를 출력하라
  1  select department_id, SALARY
  2  from (
  3  select department_id, avg(salary) as salary
  4  from employees
  5  group by department_id
  6  order by salary desc)
// 컬럼은 인라인 뷰의 알리아리스를 그대로 가져와야함
  7* where rownum < 4

SQL> // result

DEPARTMENT_ID     SALARY
------------- ----------
           90 19333.3333
          110      10154
           70      10000
profile
智(지)! 德(덕)! 體(체)!

0개의 댓글