1. 각 부서(department_id)별로 최고 연봉(salary)를 받는 사원의 사번(employee_id), 성(last_name)과 연봉(salary)을 조회하시오. 단 조회결과는 연봉의 내림차순으로 정렬되어 나타나야 합니다.
select e.employee_id,
e.last_name, e.salary
from employees e
where (e.department_id, e.salary)
in (select department_id, max(salary)
from employees group by department_id)
order by salary desc;
2. 각 업무(job) 별로 연봉(salary)의 총합을 구하고자 한다.
연봉 총합이 가장 높은 업무부터 업무명(job_title)과 연봉 총합을 조회하시오.
select j.job_title, sum(e.salary)
from employees e, jobs j
where e.job_id = j.job_id
group by j.job_title
order by sum(salary) desc;
3. 각 사원(employee)에 대해서 사번(employee_id), 이름(first_name), 부서명(department_name), 매니저(manager)의 이름(first_name)을 조회하시오.
select e.employee_id, e.first_name, e.department_name, m.first_name
from emp_details_view e, emp_details_view m
where e.manager_id=m.employee_id;
4. 자신의 매니저보다 채용일(hire_date)이 빠른 사원의 사번(employee_id), 성(last_name)과 채용일(hire_date)을 조회하라. 단 날짜 포맷과 ALIAS를 적용한다.
select e.employee_id, e.last_name, to_char(e.hire_date, 'YYYY"년"FMMM"월"DD"일"') 입사일
from employees e, employees m
where (e.manager_id=m.employee_id and e.hire_date < m.hire_date)
5. 자신의 부서 평균 급여보다 연봉이 많은 사원의 사번(employee_id), 성(last_name)과 연봉(salary)을 조회하라.
select employee_id, last_name, salary
from employees e
where salary > (select avg(salary)
from employees
where department_id=e.department_id);
6. 직종(JOB)별 최고 급여를 급여가 많은 직종부터 출력하시오.
단, 직원이 2명 이상인 직종만 조회한다.
select job_id, max(salary) from employees
group by job_id
having count(employee_id) >= 2
order by max(salary) desc;
7. 각 도시(city)에 있는 모든 부서 직원들의 평균급여를 조회하고자 한다.
평균급여가 가장 높은 도시부터 도시명(city)과 평균연봉을 출력하시오.
단, 도시에 근무하는 직원이 10명 이하인 곳은 제외하고 조회한다.
select city, avg(salary)
from emp_details_view
group by city
having count(employee_id) > =11
order by avg(salary) desc;
8. 사번(empno)이 7934인 사원보다 연봉(sal)이 높고 직종(job)이 SALESMAN인 사원의 사번과 이름과 연봉을 조회한다.
단, 연봉이 낮은 순서로 출력한다.
SELECT empno, ename, sal
FROM emp
WHERE sal > (SELECT sal
FROM emp
WHERE empno = 7934)
and job = 'SALESMAN';
9. 연봉등급(GRADE)이 4등급인 사원들의 사원번호(EMPNO), 사원명(ENAME), 연봉(SAL), 연봉등급(GRADE)을 조회한다.
연봉이 낮은 순서로 정렬하고, 연봉이 같은 경우에는 사원번호가 낮은 순서로 정렬한다.
SELECT empno, ename, sal, g.grade
FROM (SELECT * FROM emp order by empno desc) e, salgrade g
WHERE g.grade = 4
order by sal;
10. 자신의 매니저(MGR)와 동일한 부서에 근무하는 사원들의 사원번호(EMPNO), 사원명(ENAME), 부서번호(DEPTNO)를 조회한다. 단, 사원번호가 낮은 순서로 정렬한다.
(레코드 없을 수도 있습니다)
SELECT e.empno, e.ename, e.deptno
FROM emp e, emp e2
WHERE e.mgr = e2.empno and e.deptno = e2.deptno
ORDER BY 1 desc;
11. 부서지역명(LOC)이 "DALLAS"인 부서에 근무하면서 직종(JOB)이 "CLERK"인 사원들의 사원번호, 이름, 연봉을 조회한다. 단, 사원번호가 낮은 순서로 정렬한다.
SELECT empno, ename, sal
FROM emp e, dept d
WHERE e.deptno = d.deptno and loc = 'DALLAS' and job = 'CLERK';
12. 부서지역명(LOC)이 'DALLAS' 또는 'CHICAGO'인 부서에 근무하면서 연봉이 1400이상인 사원들의 연봉(SAL) 평균을 조회한다.
SELECT empno, ename, avg(sal)
FROM emp e, dept d
WHERE e.deptno = d.deptno
and loc = 'DALLAS' or loc = 'CHICAGO'
and sal > 1400
GROUP BY empno, ename;