02. Oracle hr account table(2)

5. 부서별로 가장 적은 급여를 받고 있는 직원의 이름, 부서이름, 급여를 출력하시오. 이름은 last_name만 출력하며, 부서이름으로 오름차순 정렬하고, 부서가 같을 경우 이름을 기준으로 오름차순 정렬하세요.

1
2
3
4
5
6
7
8
select   e1.last_name 사원이름, d1.department_name 부서이름, j1.급여 급여
from     employees e1, departments d1, (select   department_id 부서아이디, min(salary) 급여 
                                        from     employees 
                                        group by department_id) j1
where    d1.department_id = e1.department_id and 
         j1.부서아이디 = e1.department_id and 
         j1.급여 = e1.salary
order by d1.department_name, e1.last_name
cs



6. 각 도시(City)에 있는 모든 부서 직원들의 평균급여를 조회하고자 한다. 평균급여가 가장 낮은 도시부터 도시명(City)과 평균연봉, 해당 도시의 직원 수를 출력하시오. 단, 도시에 근무하는 직원이 10명 이상인 곳은 제외하고 조회한다.

1
2
3
4
5
6
select   l1.city 도시이름, round(avg(e1.salary),0) 평균급여, count(*) 직원수
from     locations l1, employees e1, departments d1
where    e1.department_id = d1.department_id and d1.location_id=l1.location_id
group by l1.city
having   count(*)< 10
order by round(avg(e1.salary),0)
cs

7. 30번 부서에 근무하는 사원들의 직책(job_title)별 평균 급여가 2000 이상인 직책(job_title)과 그 직책의 평균 급여.

1
2
3
4
5
select   j1.job_title 직책, to_char(avg(e1.salary),'999,999') 평균급여
from     employees e1, jobs j1
where    e1.job_id = j1.job_id and e1.department_id=30
group by j1.job_title
having   avg(e1.salary)>2000
cs


8. 'Public Account' 의 직책(job_title)으로 과거에 근무한 적이 있는 모든 사원의 사번과 이름을 출력하세요. (현재 'Public  Account'의 직책(job_title)으로 근무하는 사원은 고려하지 않습니다.)

1
2
3
select e1.employee_id 사번, e1.first_name || ' ' || e1.last_name 이름
from   employees e1, jobs j1, job_history jh1
where  e1.employee_id = jh1.employee_id and jh1.job_id = j1.job_id and j1.job_title='Public Accountant'
cs


01. Oracle hr account table(1)


1. 자신이 속한 부서의 평균 연봉보다 많은 연봉을 받은 사원의 아이디, 부서아이디, 연봉, 부서평균연봉을 조회하라.

(부서평균연봉은 반올림하여 정수로 출력할 것.  부서평균연봉이 많은 사람부터 출력할 것.)

1
2
3
4
5
6
select    e.employee_id 사번, e.department_id 부서번호, e.salary 연봉, em.부서평균연봉 부서평균연봉 
from      employees e, (select   department_id 부서번호, round(avg(salary),0) 부서평균연봉 
                        from     employees 
                        group by department_id) em
where     em.부서번호=e.department_id and e.salary > em.부서평균연봉
order by  em.부서평균연봉 desc
cs


2. employees 테이블에서 급여를 많이 받는 순서대로 조회했을 때 6번째부터 10번째까지 5명의 last_name, first_name, salary를 조회하는 SQL문장을 작성하시오.

1
2
3
4
select e.ranking ranking, e.last_name last_name, e.first_name first_name, e.salary salary
from   (select rank() over(order by salary desc) ranking, last_name, first_name, salary 
       from   employees) e
where  ranking between 6 and 10
cs


3. 직책(Job Title)이 Sales Manager인 사원들의 입사 년도와 입사 년도(hire_date)별 평균 급여를 출력하시오. 출력시 기준으로 오름차순 정렬하세요.

1
2
3
4
5
select   to_char(e.hire_date, 'yyyy') 년도, to_char(avg(e.salary),'999,999') 급여 
from     employees e, jobs j
where    e.job_id=j.job_id and job_title='Sales Manager' 
group by to_char(hire_date, 'yyyy')
order by to_char(hire_date, 'yyyy')
cs


4. 사원의 부서가 속한 도시(City)가 'Seattle'인 사원의 이름, 해당 사원의 매니저이름, 사원의 부서이름을 출력하세요. 이때 사원의 매니저가 없을 경우 '<없음>'이라고 출력하여 주세요. 이름은 last_name만 출력하며, 사원의 이름으로 오름차순 정렬하세요.

1
2
3
4
5
6
7
select   e1.last_name 사원이름, nvl(e2.last_name,'<없음>') 매니저이름, d1.department_name 부서이름
from     employees e1, employees e2, departments d1, locations l1
where    e1.department_id = d1.department_id and 
         d1.location_id = l1.location_id and 
         e1.manager_id = e2.employee_id(+) and
         l1.city='Seattle'
order by e1.last_name 
cs


+ Recent posts

티스토리 툴바