문제 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