SQL Aggregate Functions
SQL 집계 함수 (Aggregate Functions): 데이터를 요약하고 계산
SQL 집계 함수는 여러 행에서 하나의 값을 계산할 때 사용됩니다. 집계 함수는 데이터를 요약하거나 계산하여 통계적 분석을 도와줍니다. SELECT 문과 함께 사용되며, 특히 GROUP BY 절과 결합하여 데이터를 그룹별로 요약할 수 있습니다. 집계 함수는 SQL에서 데이터를 처리하는 데 필수적입니다.
가장 자주 사용되는 SQL 집계 함수는 다음과 같습니다:
- COUNT(): 행의 개수를 셈
- SUM(): 값의 합계를 계산
- AVG(): 값의 평균을 계산
- MAX(): 최대값을 반환
- MIN(): 최소값을 반환
1. COUNT(): 행 개수 세기
COUNT() 함수는 지정된 열이나 테이블에서 NULL이 아닌 행의 개수를 반환합니다.
1.1 전체 행의 개수
SELECT COUNT(*)
FROM employees;
이 쿼리는 employees
테이블의 모든 행의 개수를 반환합니다.
결과 예시:
COUNT(*)
10
1.2 특정 조건에 맞는 행의 개수
SELECT COUNT(*)
FROM employees
WHERE department = 'Sales';
이 쿼리는 Sales
부서에 속한 직원의 수를 계산합니다.
결과 예시:
COUNT(*)
3
2. SUM(): 합계 계산
SUM() 함수는 특정 열의 값을 모두 더한 합계를 계산합니다. 주로 숫자 데이터를 처리할 때 사용됩니다.
2.1 특정 열의 합계
SELECT SUM(salary)
FROM employees;
이 쿼리는 employees
테이블의 모든 직원 급여의 합계를 계산합니다.
결과 예시:
SUM(salary)
55000
2.2 조건에 맞는 데이터의 합계
SELECT SUM(salary)
FROM employees
WHERE department = 'HR';
이 쿼리는 HR
부서에 속한 직원들의 급여 합계를 계산합니다.
결과 예시:
SUM(salary)
15000
3. AVG(): 평균 계산
AVG() 함수는 특정 열의 평균값을 반환합니다.
3.1 급여의 평균 계산
SELECT AVG(salary)
FROM employees;
이 쿼리는 employees
테이블에서 직원들의 급여 평균을 계산합니다.
결과 예시:
AVG(salary)
5500
3.2 조건에 맞는 데이터의 평균 계산
SELECT AVG(salary)
FROM employees
WHERE department = 'Engineering';
이 쿼리는 Engineering
부서 직원들의 급여 평균을 계산합니다.
결과 예시:
AVG(salary)
6000
4. MAX(): 최대값 반환
MAX() 함수는 특정 열의 최대값을 반환합니다.
4.1 급여의 최대값 조회
SELECT MAX(salary)
FROM employees;
이 쿼리는 employees
테이블에서 가장 높은 급여를 반환합니다.
결과 예시:
MAX(salary)
8000
4.2 조건에 맞는 최대값 조회
SELECT MAX(salary)
FROM employees
WHERE department = 'Marketing';
이 쿼리는 Marketing
부서에서 가장 높은 급여를 반환합니다.
결과 예시:
MAX(salary)
7000
5. MIN(): 최소값 반환
MIN() 함수는 특정 열의 최소값을 반환합니다.
5.1 급여의 최소값 조회
SELECT MIN(salary)
FROM employees;
이 쿼리는 employees
테이블에서 가장 낮은 급여를 반환합니다.
결과 예시:
MIN(salary)
3000
5.2 조건에 맞는 최소값 조회
SELECT MIN(salary)
FROM employees
WHERE department = 'Sales';
이 쿼리는 Sales
부서에서 가장 낮은 급여를 반환합니다.
결과 예시:
MIN(salary)
4000
6. GROUP BY와 집계 함수 결합
집계 함수는 GROUP BY 절과 함께 사용하여 데이터를 그룹별로 요약할 수 있습니다. 예를 들어, 부서별 평균 급여를 계산할 수 있습니다.
예제: 부서별 평균 급여 계산
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;
이 쿼리는 각 부서별로 직원들의 평균 급여를 계산하고 반환합니다.
결과 예시:
department | avg_salary |
---|---|
Sales | 5000 |
HR | 5500 |
Engineering | 6000 |
예제: 부서별 직원 수 계산
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
이 쿼리는 각 부서별로 직원 수를 반환합니다.
결과 예시:
department | employee_count |
---|---|
Sales | 3 |
HR | 2 |
Engineering | 4 |
7. HAVING 절과 집계 함수
HAVING 절은 GROUP BY와 함께 사용되어 집계 결과에 조건을 걸 수 있습니다. 이는 WHERE 절이 집계 함수와 함께 사용할 수 없기 때문에 필요합니다.
예제: 직원 수가 3명 이상인 부서만 조회
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department
HAVING COUNT(*) >= 3;
이 쿼리는 직원 수가 3명 이상인 부서만 반환합니다.
결과 예시:
department | employee_count |
---|---|
Engineering | 4 |
Sales | 3 |
8. 실전 예제
예제 1: 부서별 최대 급여 조회
SELECT department, MAX(salary) AS max_salary
FROM employees
GROUP BY department;
이 쿼리는 각 부서별로 가장 높은 급여를 반환합니다.
예제 2: 급여 합계가 20,000 이상인 부서 조회
SELECT department, SUM(salary) AS total_salary
FROM employees
GROUP BY department
HAVING SUM(salary) >= 20000;
이 쿼리는 급여의 합계가 20,000 이상인 부서를 반환합니다.
요약
SQL 집계 함수는 데이터를 요약하고 계산하는 데 매우 유용한 도구입니다. COUNT, SUM, AVG, MAX, MIN은 데이터를 분석하고 요약할 때 자주 사용되며, GROUP BY 및 HAVING 절과 함께 사용하면 더욱 강력한 데이터 분석 도구가 됩니다. 이러한 함수는 데이터베이스에서 통계적 분석을 수행하고, 복잡한 데이터를 요약하는 데 필수적입니다.