7.
찾는 항목:평균급여보다 많은 급여를 받고, 이름에 u가 포함된 사원과 같은 부서
에서 근무하는 사원의 사번, 이름, 급여를 찾아라.
-> 평균급여가 뭐냐?-->서브쿼리(결과가 1건)
select avg(salary) from employees
-> 이름에 u가 포함된 사원의 부서번호가 뭐냐?-->서브쿼리(결과가 여러건)
select department_id from employees where last_name like '%u%'
메인쿼리
select employee_id, last_name, salary from employees
where salary > (select avg(salary) from employees) and
department_id in(select department_id from employees
where last_name like '%u%');
6.
찾는 항목:부서이름이 Executive인 부서의 부서번호, 사원의 이름, 업무코드
-> 부서이름이 Executive인 부서번호가 뭐냐?-->서브쿼리(결과가 1건)
select department_id from departments
where department_name = 'Executive'
메인쿼리
select department_id, last_name, job_id from employees
where department_id in (select department_id from departments
where department_name = 'Executive');
5.
찾는 항목:King의 부하직원의 이름과 급여를 찾아라.
->King의 사번이 뭐냐?-->서브쿼리(결과가 여러건)
select employee_id from employees where last_name = 'King'
메인쿼리
select last_name, salary from employees
where manager_id in
(select employee_id from employees where last_name = 'King' );
4.
찾는 항목:부서위치번호가 1700인 부서에 근무하는 사원의 이름,부서번호,업무코드
->부서위치번호가 1700인 부서의 부서번호가 뭐냐?-->서브쿼리(결과가 여러건)
select department_id from employees
where location_id = 1700
메인쿼리
select last_name, department_id, job_id from employees
where department_id in (select department_id from departments
where location_id = 1700);
3.
찾는 항목:이름에 u가 포함된 사원과 같은 부서의 사원번호,사원이름
->이름에 u가 포함된 사원의 부서번호가 뭐냐?-->서브쿼리(결과가 여러건)
select department_id from employees
where last_name like '%u%';
메인쿼리:
select employee_id, last_name from employees
where department_id in (select department_id from employees
where last_name like '%u%');
2.
찾는 항목:평균급여보다 많은 사원의 사번, 이름을 찾아라.
정렬:급여를 기준으로 오름차순(작은값->큰값)
-> 평균급여가 뭐냐?-->서브쿼리 select avg(salary) from employees
메인쿼리
select employee_id, last_name, salary from employees
where salary > (select avg(salary) from employees)
order by salary;
1.
찾는 항목:Zlotkey와 동일한 부서에 속한 사원의 이름과 입사일
-> Zlotkey의 부서번호가 뭐냐?-->서브쿼리
-> select department_id from employees where last_name = 'Zlotkey'
메인쿼리:
select last_name, hire_date from employees
where department_id =
(select department_id from employees where last_name = 'Zlotkey')
and last_name <> 'Zlotkey';
==========참고사항==================
3장 함수(단일행 함수)
select lower(last_name) from employees;
-> 모든 사원의 이름을 소문자로 바꿔서 출력해라.
-> 결과로 출력되는 행의 수는 107건이 출력된다.
5장 함수(그룹함수)
select count(*) from employees;
-> 1건 출력된다.
-> 커미션의 평균을 출력해라.
1. 전 직원을 대상으로 한 커미션의 평균?
-> 일반사원인 경우는 null을 0으로 바꾼다.
2. 영업사원을 대상으로 한 커미션 평균?
select department_id, count(last_name) from employees;
위의 명령어는 실행되지 않는다.
해결방법1 : 따로 실행한다.
select department_id from employees;
select count(last_name) from employees;
해결방법2 : 그룹으로 묶는다.
select department_id, count(last_name) from employees
group by department_id;
단일행 서브쿼리: 쿼리의 결과가 1건인 쿼리
--> 1대1로 비교하는 연산자:단일행 연산자
다중행 서브쿼리: 쿼리의 결과가 여러건인 쿼리
--> 여러데이터를 한꺼번에 비교할 수 있는 연산자:다중행 연산자
===================================
10.
각 부서에 대해 --> 각 부서이름을 기준으로 그룹으로 묶어라
찾는 항목:부서이름, 부서위치, 사원 수, 각 부서의 평균 급여
부서위치, 부서번호,부서이름:departments
부서번호, 급여 : employees
select d.department_name, d.location_id, count(*), avg(salary)
from employees e, departments d
where e.department_id = d.department_id
group by d.department_name, d.location_id;
9.
관리자 별로 그룹으로 묶은 후 부하직원들의 최저 급여를 찾아라.
조건1: 관리자를 알 수 없는 사원을 빼라(사장 빼라) --> 일반조건
조건2: 최저급여가 6000 미만인 그룹은 빼라 --> 그룹에 적용 조건
정렬:최저급여를 기준으로 내림차순(큰 값 --> 작은 값) desc
select manager_id, min(salary)
from employees
where manager_id is not null
group by manager_id
having min(salary) > 6000
order by min(salary) desc;
8.
최고급여: max(salary), 최저급여:min(salary)
select max(salary) - min(salary) "차 액" from employees;
7.
관리자는 나열하지 말고 -> 출력하지 말아라.
관리자의 수를 출력.
참고: employees의 manager_id --> 관리자의 사번
select count(distinct manager_id) "관리자의 수" from employees;
6.
업무가 동일한 사원수 -> 업무가 같은 사원 수 -> 업무를 그룹을 묶은 후 사원 수
select job_id, count(*)
from employees
group by job_id;
5.
4번 문제를 수정해서, 업무유형별로(업무코드별로 그룹으로 묶어라)
최고, 최저, 총액, 평균 출력
select job_id, max(salary) 최고, min(salary) 최저, sum(salary) 총액,
round(avg(salary)) 평균
from employees
group by job_id;
4.
찾는 항목:최고급여, 최저급여, 급여 총액, 평균 급여
select max(salary) 최고, min(salary) 최저, sum(salary) 총액,
round(avg(salary)) 평균
from employees;