SQL에서 SUM 함수와 조건을 결합하여 행의 합계를 계산하는 방법

SQL의 SUM 함수는 데이터베이스 내 특정 컬럼의 숫자를 합산하는 데 사용되는 기본적인 집계 함수입니다. 하지만 단순히 숫자를 합산하는 것뿐만 아니라, 특정 조건에 따라 합계를 계산하는 방법도 있습니다. 본 기사에서는 SQL의 SUM 함수에 조건을 결합하여 행의 합계를 계산하는 방법에 대해 기본적인 사용법부터 응용까지 자세히 설명합니다. 이를 통해 데이터베이스 쿼리의 효율성과 정확도를 높일 수 있습니다.

목차

SUM 함수의 기본적인 사용법

SUM 함수는 지정된 컬럼의 숫자를 합산하는 데 사용됩니다. 기본적인 구문은 다음과 같습니다.

SELECT SUM(column_name) FROM table_name;

예를 들어, sales 테이블에 amount라는 컬럼이 있고, 해당 컬럼의 합계를 계산하려면 다음과 같이 합니다.

SELECT SUM(amount) FROM sales;

이 쿼리는 sales 테이블 내 모든 amount 값을 합산하여 결과를 반환합니다. SUM 함수는 특정 컬럼에만 작용하며, NULL 값은 무시됩니다.

WHERE 절과 SUM 함수의 결합

WHERE 절을 사용하면 특정 조건에 따라 합계를 계산할 수 있습니다. 이를 통해 데이터셋의 일부만 대상으로 합계를 구하는 것이 가능합니다.

예를 들어, sales 테이블의 amount 컬럼에서 특정 월의 판매 합계를 계산하려면 다음과 같이 쿼리를 작성합니다.

SELECT SUM(amount) FROM sales WHERE month = '2023-05';

이 쿼리는 sales 테이블에서 month 컬럼이 ‘2023-05’와 일치하는 행의 amount 합계를 계산합니다. 조건을 추가함으로써 특정 조건에 따른 데이터의 합계를 쉽게 얻을 수 있습니다.

GROUP BY 절과 SUM 함수의 활용법

GROUP BY 절을 사용하면 데이터를 그룹화하여 각 그룹별로 합계를 계산할 수 있습니다. 이를 통해 각 부서나 각 월별 판매 합계를 쉽게 얻을 수 있습니다.

예를 들어, sales 테이블에 department라는 컬럼이 있고, 부서별 판매 합계를 계산하려면 다음과 같이 쿼리를 작성합니다.

SELECT department, SUM(amount) FROM sales GROUP BY department;

이 쿼리는 sales 테이블을 department로 그룹화하고, 각 부서별로 amount 합계를 계산하여 반환합니다.

또한 월별 판매 합계를 계산하려면 다음과 같이 합니다.

SELECT month, SUM(amount) FROM sales GROUP BY month;

이를 통해 각 월별 판매 합계를 얻을 수 있습니다. GROUP BY 절을 사용하면 데이터 집계와 분석이 보다 유연하게 이루어집니다.

HAVING 절로 조건을 설정한 합계 계산

HAVING 절은 GROUP BY 절로 그룹화된 결과에 대해 조건을 설정하는 데 사용됩니다. 이를 통해 특정 조건을 만족하는 그룹만을 대상으로 집계 결과를 필터링할 수 있습니다.

예를 들어, 판매 합계가 1000을 넘는 부서를 가져오려면 다음과 같이 쿼리를 작성합니다.

SELECT department, SUM(amount) as total_sales  
FROM sales  
GROUP BY department  
HAVING SUM(amount) > 1000;

이 쿼리는 department별로 그룹화한 후, 판매 합계가 1000을 넘는 부서만을 선택하여 표시합니다.

또한 월별 판매 합계가 2000을 넘는 월을 가져오려면 다음과 같이 합니다.

SELECT month, SUM(amount) as total_sales  
FROM sales  
GROUP BY month  
HAVING SUM(amount) > 2000;

HAVING 절을 사용하면 집계 결과에 대해 추가적인 필터링을 수행하여 더 세부적인 분석을 할 수 있습니다.

SUM 함수와 CASE 문 결합

SUM 함수와 CASE 문을 결합하면 복잡한 조건에 따라 합계를 계산할 수 있습니다. CASE 문을 사용하면 특정 조건에 맞는 경우에만 값을 합산할 수 있습니다.

예를 들어, sales 테이블에서 특정 부서의 판매만 합산하려면 다음과 같이 쿼리를 작성합니다.

SELECT   
  SUM(CASE WHEN department = 'Electronics' THEN amount ELSE 0 END) AS electronics_sales,  
  SUM(CASE WHEN department = 'Clothing' THEN amount ELSE 0 END) AS clothing_sales  
FROM sales;

이 쿼리는 departmentElectronics인 경우에만 amount를 합산하고, 별도의 컬럼으로 Clothing의 판매 합계를 계산합니다.

또한, 특정 기간의 판매를 조건으로 합산하려면 다음과 같이 합니다.

SELECT   
  SUM(CASE WHEN month BETWEEN '2023-01' AND '2023-06' THEN amount ELSE 0 END) AS first_half_sales,  
  SUM(CASE WHEN month BETWEEN '2023-07' AND '2023-12' THEN amount ELSE 0 END) AS second_half_sales  
FROM sales;

이 쿼리는 2023년 상반기와 하반기 각각의 판매 합계를 계산합니다.

CASE 문과 SUM 함수를 결합하면 조건에 따른 유연한 집계가 가능해져 복잡한 데이터 분석에도 대응할 수 있습니다.

실전 응용 예

여기서는 SUM 함수와 조건을 결합한 실전 SQL 쿼리의 예를 몇 가지 소개합니다. 이를 통해 배운 지식을 실제 데이터베이스 작업에 적용할 수 있습니다.

예 1: 특정 지역별 연간 판매 합계

지역별 연간 판매 합계를 계산하려면 다음 쿼리를 사용합니다.

SELECT   
  region,  
  SUM(amount) AS total_sales  
FROM sales  
WHERE year = 2023  
GROUP BY region;

이 쿼리는 sales 테이블에서 2023년 데이터를 지역별로 그룹화하여 각 지역의 판매 합계를 계산합니다.

예 2: 월별 판매 합계 및 전년 동월 대비

월별 판매 합계와 전년 동월 대비를 계산하려면 다음과 같은 쿼리를 사용합니다.

SELECT   
  month,  
  SUM(amount) AS total_sales,  
  SUM(CASE WHEN year = 2023 THEN amount ELSE 0 END) - SUM(CASE WHEN year = 2022 THEN amount ELSE 0 END) AS year_over_year_change  
FROM sales  
GROUP BY month;

이 쿼리는 월별 판매 합계를 계산하고 전년 동월과의 판매 차이를 구합니다.

예 3: 상품 카테고리별 판매 합계 및 평균 판매

상품 카테고리별 판매 합계와 평균 판매를 계산하려면 다음 쿼리를 사용합니다.

SELECT   
  category,  
  SUM(amount) AS total_sales,  
  AVG(amount) AS average_sales  
FROM sales  
GROUP BY category;

이 쿼리는 상품 카테고리별로 판매 합계와 평균 판매를 계산합니다.

이러한 응용 예를 통해 SUM 함수와 조건 결합을 사용한 실제 데이터베이스 작업에 대한 이해를 높일 수 있습니다.

SQL 연습 문제

여기서는 지금까지 배운 SUM 함수와 조건 결합을 활용한 SQL 연습 문제를 몇 가지 소개합니다. 이를 통해 직접 실습하면서 이해를 심화할 수 있습니다.

연습 문제 1: 특정 제품의 월별 판매 합계

다음 SQL 쿼리를 완성하여 sales 테이블에서 제품 ID가 101인 월별 판매 합계를 계산하세요.

SELECT   
  month,  
  SUM(amount) AS total_sales  
FROM sales  
WHERE product_id = 101  
GROUP BY month;

연습 문제 2: 특정 연도의 각 지역별 판매 합계

sales 테이블에서 2023년의 각 지역별 판매 합계를 계산하는 SQL 쿼리를 작성하세요.

SELECT   
  region,  
  SUM(amount) AS total_sales  
FROM sales  
WHERE year = 2023  
GROUP BY region;

연습 문제 3: 부서별 판매 합계가 특정 임계값을 초과하는 부서 목록

sales 테이블을 사용하여 판매 합계가 5000을 넘는 부서 목록을 가져오는 SQL 쿼리를 완성하세요.

SELECT   
  department,  
  SUM(amount) AS total_sales  
FROM sales  
GROUP BY department  
HAVING SUM(amount) > 5000;

연습 문제 4: 기간 내 특정 조건에 따른 판매 합계

2023년 상반기(1월에서 6월)의 Electronics 부서 판매 합계를 계산하는 SQL 쿼리를 작성하세요.

SELECT   
  SUM(amount) AS total_sales  
FROM sales  
WHERE department = 'Electronics'   
AND month BETWEEN '2023-01' AND '2023-06';

이 연습 문제들을 통해 SUM 함수와 조건 결합에 대한 이해를 높이고, 실제 데이터 분석에 적용해보세요.

요약

SQL의 SUM 함수는 데이터의 합계를 계산하는 강력한 도구입니다. WHERE 절, GROUP BY 절, HAVING 절, 그리고 CASE 문과 결합하여 다양한 조건에 맞춰 유연하게 집계를 수행할 수 있습니다. 실전 쿼리와 연습 문제를 통해 SUM 함수의 기초부터 응용까지 이해하고, 데이터 분석에 활용하세요. 이를 통해 복잡한 데이터셋에서 유용한 정보를 추출하고, 의사결정에 기여할 수 있게 됩니다.

목차