SQL에서는 특정 컬럼의 **총합(SUM)과 개수(COUNT)**를 구할 때 **집계 함수(Aggregate Function)**를 사용합니다.
이 함수들은 여러 행을 계산하여 단일 결과 값을 반환합니다.
✅ 1. SUM (합계 구하기)
SUM() 함수는 특정 컬럼의 모든 값을 더한 총합을 반환합니다.
📌 예제 1: 전체 직원 급여의 총합 구하기
SELECT SUM(salary) AS total_salary
FROM employees;
📌 실행 결과
설명:
- SUM(salary)는 **모든 직원의 급여를 더한 값(총합)**을 반환
✅ 2. GROUP BY와 함께 사용 (부서별 급여 총합 구하기)
GROUP BY를 사용하면 특정 그룹(예: 부서별, 직책별)로 데이터를 묶어 합계를 구할 수 있습니다.
📌 예제 2: 부서별 급여 총합 구하기
SELECT department, SUM(salary) AS total_salary
FROM employees
GROUP BY department;
📌 실행 결과
설명:
- GROUP BY department → 부서별로 그룹화
- SUM(salary) → 각 부서의 급여 총합 계산
✅ 3. COUNT (행 개수 구하기)
COUNT() 함수는 특정 컬럼의 **행 개수(데이터 개수)**를 반환합니다.
📌 예제 3: 전체 직원 수 구하기
SELECT COUNT(*) AS total_employees
FROM employees;
📌 실행 결과
설명:
- COUNT(*)는 **모든 행의 개수(직원 수)**를 반환
✅ 4. 특정 컬럼 기준으로 개수 구하기
NULL 값을 포함하는 컬럼을 COUNT할 경우, COUNT(column_name)은 NULL을 제외한 개수만 반환합니다.
반면, COUNT(*)는 NULL 포함 모든 행을 계산합니다.
📌 예제 4: 급여 정보가 있는 직원 수 구하기
SELECT COUNT(salary) AS salary_count
FROM employees;
📌 실행 결과
설명:
- COUNT(salary)는 NULL이 아닌 값만 계산하여 10명 반환 (급여 정보가 없는 직원 제외)
- COUNT(*)를 사용하면 **NULL 포함 전체 직원 수(12명)**가 반환됨
✅ 5. GROUP BY와 함께 사용 (부서별 직원 수 구하기)
GROUP BY를 사용하면 특정 그룹(예: 부서별)로 데이터를 묶어 개수를 구할 수 있습니다.
📌 예제 5: 부서별 직원 수 구하기
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;
📌 실행 결과
설명:
- GROUP BY department → 부서별로 그룹화
- COUNT(*) → 각 부서의 직원 수 반환
✅ 6. DISTINCT와 함께 사용 (중복 제거 후 개수 세기)
중복된 데이터를 제외하고 개수를 세고 싶다면 COUNT(DISTINCT column_name)을 사용할 수 있습니다.
📌 예제 6: 서로 다른 직급 개수 구하기
SELECT COUNT(DISTINCT job_title) AS unique_jobs
FROM employees;
📌 실행 결과
설명:
- COUNT(DISTINCT job_title) → 중복된 직급을 제외한 개수 반환
✅ 7. NULL 값이 포함된 경우 처리하기 (NVL 활용)
SUM()을 사용할 때 NULL 값이 포함되면 자동으로 무시됩니다.
하지만 NULL 값을 특정 값으로 변경하고 합계를 구하려면 NVL()을 사용할 수 있습니다.
📌 예제 7: NULL을 0으로 변환 후 합계 구하기
SELECT SUM(NVL(salary, 0)) AS total_salary
FROM employees;
설명:
- NVL(salary, 0) → NULL 값을 0으로 변환 후 합계 계산
✅ 8. 정리
✅ SUM(): 컬럼의 총합 반환
✅ COUNT(*): NULL 포함 모든 행 개수 반환
✅ COUNT(column_name): NULL 제외 행 개수 반환
✅ COUNT(DISTINCT column_name): 중복을 제외한 개수 반환
✅ GROUP BY와 함께 사용하면 그룹별 합계 및 개수를 구할 수 있음
✅ NULL 값을 고려할 경우, NVL()을 사용하여 처리 가능
'기획자가 알아야 할 IT지식 > 기획자가 알아야 할 SQL' 카테고리의 다른 글
24강. 그룹을 나누어 순위를 매기기 (NTILE 함수) (0) | 2025.03.24 |
---|---|
23강. 순위 함수 사용하기 (RANK, DENSE_RANK) (0) | 2025.03.24 |
21강. SQL에서 최대, 최소, 평균값 구하기 (MAX, MIN, AVG) (0) | 2025.03.23 |
20강. 조건에 따라 다른 값을 반환하는 CASE WHEN 문 (0) | 2025.03.23 |
19강. NULL 값을 처리하는 방법 (NVL, NVL2) (0) | 2025.03.22 |