SQL 실습 3 : Aggregating Data Using Group Functions

FMA·2024년 2월 21일

[코딩테스트] SQL

목록 보기
2/2

LiveSQL 사용, DB : HR Object and Data

KEYWORDS : 그룹 함수, AVG와 SUM 함수, MIN과 MAX 함수, COUNT 함수, GROUP 함수, HAVING 절

  1. 모든 사원의 급여 최고액, 최저액, 총액 및 평균액을 표시하십시오. 열 레이블을 각각 Maximum, Minimum, Sum 및 Average로 지정하고 결과를 정수로 반올림 하십시오.
SELECT MAX(salary) Maximum, MIN(salary) Minimum, SUM(salary) Sum, ROUND(AVG(salary)) Average
FROM employees
  1. 1번을 수정하여 각 업무 유형별로 표시하십시오.
SELECT job_id, MAX(salary) Maximum, MIN(salary) Minimum, SUM(salary) Sum, ROUND(AVG(salary)) Average
FROM employees
GROUP BY job_id
  1. 업무가 동일한 사원 수를 표시하는 질의를 작성하십시오.
SELECT job_id, COUNT(job_id)
FROM employees
GROUP BY job_id
  1. 관리자는 나열하지 말고 관리자 수를 확인하십시오. 열 레이블은 Number of Managers로 지정하십시오.
SELECT COUNT(manager_id) "Number of Managers"
FROM employees
  1. 최고 급여와 최저 급여의 차액을 표시하는 질의를 작성하고 열 레이블을 DIFFERENCE로 지정하십시오.
SELECT (MAX(salary) - MIN(salary)) "DIFFERENCE"
FROM employees
  1. 관리자 번호 및 해당 관리자에 속한 사원의 최저 급여를 표시하십시오. 관리자를 알 수 없는 사원 및 최저 급여가 $6,000 미만인 그룹은 제외시키고 결과를 급여에 대한 내림차순으로 정렬하십시오.
SELECT manager_id, MIN(salary)
FROM employees
GROUP BY manager_id, salary
HAVING MIN(salary) > 6000
ORDER BY salary
  1. 각 부서에 대해 부서 이름, 위치, 사원 수 , 부서 내 모든 사원의 평균 급여를 표시하는 질의를 작성하고, 열 레이블을 각각 Name, Location, Number of People 및 Salary 로 지정하십시오. 평균 급여는 소수점 둘째 자리로 반올림하십시오.
select department_id "Name", count(department_id) "Number of People", ROUND(avg(salary),2) "Salary"
from employees
group by department_id
  1. 총 사원 수 및 2005, 2006, 2007, 2008년에 입사한 사원 수를 표시하는 질의를 작성하고 적합한 열 머리글을 작성하십시오.
select count(employee_id) "total",
sum(decode(to_char(hire_date, 'YYYY'), 2005, 1, 0)) "2005",
sum(decode(to_char(hire_date, 'YYYY'), 2006, 1, 0)) "2006",
sum(decode(to_char(hire_date, 'YYYY'), 2007, 1, 0)) "2007",
sum(decode(to_char(hire_date, 'YYYY'), 2008, 1, 0)) "2008"
from employees
  1. 업무를 표시한 다음 해당 업무에 대해 급여 총액과 부서 별 급여 (20, 50, 80, 90)의 총액을 각각 표시하는 형렬 질의를 작성하고 각 열에 적 합한 머리글을 지정하십시오.
select job_id "job",
sum(decode(department_id, 20, salary)) "Dept 20",
sum(decode(department_id, 50, salary)) "Dept 50",
sum(decode(department_id, 80, salary)) "Dept 80",
sum(decode(department_id, 90, salary)) "Dept 90",
sum(salary) "total"
from employees
group by job_id

0개의 댓글