MySQL에서 집계 함수는 여러 행을 하나의 결과로 요약하는 데 사용됩니다. 주로 데이터 집합의 값에 대한 계산을 수행하고, 그 결과를 반환하는 데 사용됩니다. 집계 함수는 GROUP BY 절과 함께 자주 사용되며, 대량의 데이터를 요약하거나 분석할 때 매우 유용합니다.
MySQL에서 자주 사용하는 주요 집계 함수는 다음과 같습니다:
특정 컬럼이나 전체 데이터에서 행의 개수를 반환합니다.
NULL 값은 제외하고 카운트합니다.
사용 예시:
SELECT COUNT(*) AS total_rows
FROM employees;
이 쿼리는 employees 테이블의 모든 행의 개수를 반환합니다.
특정 컬럼에서 중복되지 않은 값을 카운트:
SELECT COUNT(DISTINCT department_id) AS unique_departments
FROM employees;
이 쿼리는 중복을 제외한 부서 ID의 개수를 반환합니다.
숫자 값들의 합을 반환합니다.
사용 예시:
SELECT SUM(salary) AS total_salary
FROM employees;
이 쿼리는 employees 테이블에서 모든 직원의 급여 합계를 반환합니다.
숫자 값들의 평균을 계산하여 반환합니다.
사용 예시:
SELECT AVG(salary) AS avg_salary
FROM employees;
이 쿼리는 employees 테이블에서 직원들의 평균 급여를 반환합니다.
가장 큰 값을 반환합니다.
사용 예시:
SELECT MAX(salary) AS max_salary
FROM employees;
이 쿼리는 employees 테이블에서 가장 높은 급여를 반환합니다.
가장 작은 값을 반환합니다.
사용 예시:
SELECT MIN(salary) AS min_salary
FROM employees;
이 쿼리는 employees 테이블에서 가장 낮은 급여를 반환합니다.
그룹화된 행들의 값을 하나의 문자열로 연결하여 반환합니다.
기본적으로 쉼표로 구분된 값을 반환하며, SEPARATOR를 사용하여 구분자를 변경할 수 있습니다.
사용 예시:
SELECT department_id, GROUP_CONCAT(employee_name) AS employees
FROM employees
GROUP BY department_id;
이 쿼리는 각 부서별로 직원들의 이름을 하나의 문자열로 연결해서 반환합니다.
구분자 변경:
SELECT department_id, GROUP_CONCAT(employee_name SEPARATOR ' | ') AS employees
FROM employees
GROUP BY department_id;
이 쿼리는 각 부서별로 직원들의 이름을 |로 구분하여 연결해서 반환합니다.
집계 함수는 주로 GROUP BY와 함께 사용됩니다. GROUP BY는 특정 컬럼을 기준으로 데이터를 그룹화한 후, 각 그룹에 대해 집계 연산을 수행합니다.
예시: 부서별 평균 급여 계산
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;
이 쿼리는 각 부서별로 직원들의 평균 급여를 계산하여 반환합니다.
예시: 부서별 직원 수와 최대 급여 계산
SELECT department_id, COUNT(*) AS employee_count, MAX(salary) AS max_salary
FROM employees
GROUP BY department_id;
이 쿼리는 각 부서별로 직원 수와 최대 급여를 계산하여 반환합니다.
집계 함수들은 NULL 값을 무시하고 계산합니다. 즉, NULL 값은 SUM(), AVG(), COUNT() 등의 계산에 포함되지 않습니다.
예시: NULL 값 처리
SELECT COUNT(salary) AS salary_count
FROM employees;
이 쿼리는 급여 값이 NULL이 아닌 직원의 수만 카운트합니다.