본문 바로가기
기획자가 알아야 할 IT지식/기획자가 알아야 할 SQL

22강. SQL에서 합계 및 개수 구하기 (SUM, COUNT)

by 일잘러로 살기 2025. 3. 24.

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()을 사용하여 처리 가능