==========참고사항==================
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;