Database : Basic SQL문_퀴즈(1)
QUIZ
1. 각 직무 유형(job_id)에 대해 최소, 최대, 합계 및 평균 급여를 표시하도록 쿼리를 작성합니다.
정답)
select job_id, max(salary), min(salary), sum(salary), avg(salary)
from employees
group by job_id
order by job_id;
* jobid의 경우는 개별행이기 때문에 그룹행으로 묶어주어야 합니다.--
2. 사원의 총 수와 2002년, 2003년, 2004년 및 2005년에 채용 사원의 수를 표시하는 쿼리를 작성합니다. 적절한 열 머리글을 지정하십시오.
정답)
select count(*) AS "총 사원 수",
sum(decode(to_char(hire_date,'yyyy'), '2002', 1, 0)) "2002년",
sum(decode(to_char(hire_date,'yyyy'), '2003', 1, 0)) "2003년",
sum(decode(to_char(hire_date,'yyyy'), '2004', 1, 0)) "2004년",
sum(decode(to_char(hire_date,'yyyy'), '2005', 1, 0)) "2005년"
from employees;
* decode (조건부 표현식-where같은 기능을 보입니다.).
* count 보다는 sum함수를 더 많이 사용합니다.
* 2001년도와 같으면 1이며 그 1을 더해라. 즉 2001년에 입사한 사람 수를 알 수 있습니다.
* to_char(입사 일자, 연산자)를 사용하면 입사날을 알 수 있습니다.
3.부서 20, 50, 80 및 90에 대해 직무(job_id), 부서 ID(department_id)별 해당 직무에 대한 급여 및 해당 직무에 대한 총 급여를 표시하고 각 열에 적절한 머리글을 지정하기 위한 행렬 쿼리를 작성합니다.
정답)
select job_id,
sum(decode(department_id, 20, salary, 0)) dept_20,
sum(decode(department_id, 50, salary, 0)) dept_50,
sum(decode(department_id, 90, salary, 0)) dept_90
from employees
group by job_id;
댓글
댓글 쓰기