핵심 원리
이 SQL 예제는 SUM()
함수를 사용하여 주어진 데이터 세트 내에서 특정 그룹의 총합을 계산하는 방법을 보여줍니다. GROUP BY
절을 사용하여 데이터를 그룹화하고, 각 그룹의 합계를 계산하여 출력합니다. 또한, HAVING
절을 통해 그룹화된 데이터에서 특정 조건을 충족하는 그룹만을 선택적으로 출력할 수 있습니다.
실무에서 쓰이는 이유
SUM()
함수는 데이터베이스 내에서 집계 연산을 수행할 때 자주 사용됩니다. 예를 들어, 부서별 총 급여, 분기별 매출 합계, 프로젝트별 총 예산 등을 계산할 때 유용합니다. GROUP BY
절과 함께 사용하면 특정 범주나 그룹에 따라 데이터를 분석하고, 비즈니스 인사이트를 도출하는 데 중요한 역할을 합니다.
실무에서 구체적으로 어떤 상황에서 사용되는지 예상 상황 예측
- 회계 및 재무 보고서 작성: 부서별로 월간 지출을 계산하거나, 분기별로 총 수익을 집계하는 경우.
- 판매 데이터 분석: 각 제품군이나 지역별로 총 판매액을 분석하여, 어느 제품이나 지역이 가장 많은 수익을 창출했는지 확인.
- 인사 관리: 팀별 총 인건비를 계산하거나, 각 직원의 총 근무 시간을 계산하는 경우.
연습 문제
- 각 부서의 총 급여를 계산하고, 총 급여가 10,000 이상인 부서만을 출력하세요.
- 각 직무별로 총 급여를 계산한 후, 급여가 높은 순서대로 정렬하세요.
- 직무가 ‘MANAGER’가 아닌 직원들의 총 급여가 5000 이상인 직무들을 출력하세요.
연습문제 해답
- “`sql
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno
HAVING SUM(sal) >= 10000;
2. ```sql
SELECT job, SUM(sal)
FROM emp
GROUP BY job
ORDER BY SUM(sal) DESC;
- “`sql
SELECT job, SUM(sal)
FROM emp
WHERE job != ‘MANAGER’
GROUP BY job
HAVING SUM(sal) >= 5000;
응용 문제
1. 각 부서와 직무별로 총 급여를 계산하고, 급여가 가장 높은 부서와 직무를 출력하세요.
2. 'CLERK' 직무를 제외한 나머지 직무의 총 급여가 4000 이상인 경우를 출력하세요.
3. 부서 번호와 직무별로 총 급여를 계산하여, 부서 번호와 직무 조합별로 정렬하여 출력하세요.
응용문제 해답
1. ```sql
SELECT deptno, job, SUM(sal)
FROM emp
GROUP BY deptno, job
ORDER BY SUM(sal) DESC
FETCH FIRST 1 ROWS ONLY;
2``sql
SELECT job, SUM(sal)
FROM emp
WHERE job != 'CLERK'
GROUP BY job
HAVING SUM(sal) >= 4000;
3. ```sql
SELECT deptno, job, SUM(sal)
FROM emp
GROUP BY deptno, job
ORDER BY deptno, job;