상세 컨텐츠

본문 제목

쿼리 sum(if 함수로 count 건수 구하는 방법?

IT/DB

by JR 2025. 1. 28. 01:59

본문

300x250
반응형

 

 

 

MySQL에서 SUM과 IF를 조합하여 특정 조건을 만족하는 데이터의 건수를 구하려면 다음과 같은 방식으로 작성할 수 있습니다.

 

이 조합은 조건에 따라 데이터를 필터링하고 합계를 계산하거나 건수를 세는 데 유용합니다.


기본 구문

sql
 
SELECT SUM(IF(조건, 1, 0)) AS 건수 FROM 테이블명;
  • IF(조건, 1, 0):
    • 조건이 참이면 1, 거짓이면 0을 반환합니다.
  • SUM(IF(조건, 1, 0)):
    • 조건을 만족하는 경우의 1을 합산하여, 건수를 계산합니다.

예제 1: 특정 조건의 건수 세기

데이터:

ID Status
1 active
2 inactive
3 active
4 inactive
5 active

조건: Status = 'active'

sql
 
SELECT SUM(IF(Status = 'active', 1, 0)) AS active_count FROM my_table;

결과:

active_count

3

예제 2: 여러 조건으로 건수 나누기

조건별로 건수를 나누어 계산할 수 있습니다.

데이터:

ID Status
1 approved
2 pending
3 approved
4 rejected
5 approved

쿼리:

sql
 
SELECT 
SUM(IF(Status = 'approved', 1, 0)) AS approved_count, 
SUM(IF(Status = 'pending', 1, 0)) AS pending_count, 
SUM(IF(Status = 'rejected', 1, 0)) AS rejected_count 
FROM my_table;

결과:

approved_count pending_count rejected_count
3 1 1

예제 3: 그룹별로 건수 계산

그룹별 조건을 만족하는 데이터의 건수를 계산할 수도 있습니다.

데이터:

Department Status
HR active
IT active
HR inactive
IT active
HR active

쿼리:

sql
 
SELECT 
Department, 
SUM(IF(Status = 'active', 1, 0)) AS active_count 
FROM my_table 
GROUP BY Department;

결과:

Department active_count
HR 2
IT 2

예제 4: 다른 조건 값 합산

IF에서 반환값을 1과 0이 아닌 다른 값으로 설정해 특정 조건에 따른 합계를 계산할 수도 있습니다.

데이터:

ID Score Status
1 10 active
2 20 inactive
3 30 active
4 40 inactive
5 50 active

쿼리:

sql
 
SELECT SUM(IF(Status = 'active', Score, 0)) AS active_score_sum 
FROM my_table;

결과:

active_score_sum

90

요약

  • SUM(IF(조건, 1, 0)): 조건을 만족하는 데이터의 건수 계산.
  • SUM(IF(조건, 값, 0)): 조건을 만족하는 데이터의 값 합계 계산.
  • **GROUP BY**와 결합하여 그룹별 조건 데이터를 계산.
300x250
반응형

관련글 더보기