Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL SUM() 함수 내 조건식의 평가 방식 완벽 이해하기

MySQL SUM() 함수와 조건식의 동작 원리

MySQL에서 SUM() 함수 내부에 조건식을 사용하면, 해당 조건을 만족하는 행(row)의 개수를 손쉽게 구할 수 있습니다. 그 원리는 간단합니다. MySQL은 각 행에 대해 조건식을 평가할 때, 조건이 참(true)이면 1을, 거짓(false)이면 0을 반환하고, SUM() 함수는 이 값들을 모두 더해줍니다.

즉, 조건식의 결과값(1 또는 0)을 합산하는 것이므로, 최종 결과는 곧 조건을 충족하는 행의 총 개수가 됩니다.

예제 테이블: employee

다음과 같은 데이터를 가진 'employee' 테이블로 실제 동작을 확인해 보겠습니다.

mysql> Select * from Employee;
+----+--------+--------+
| ID | Name   | Salary |
+----+--------+--------+
| 1  | Gaurav | 50000  |
| 2  | Rahul  | 20000  |
| 3  | Advik  | 25000  |
| 4  | Aarav  | 65000  |
| 5  | Ram    | 20000  |
| 6  | Mohan  | 30000  |
| 7  | Aryan  | NULL   |
| 8  | Vinay  | NULL   |
+----+--------+--------+
8 rows in set (0.00 sec)

조건식을 활용한 SUM() 함수 사용 예시

예를 들어, 급여(Salary)가 20000보다 많은 직원이 몇 명인지 알고 싶다면 다음과 같이 SUM() 함수 안에 조건식을 작성할 수 있습니다.

mysql> Select SUM(Salary>20000) from employee;
+-------------------+
| SUM(Salary>20000) |
+-------------------+
|                 4 |
+-------------------+
1 row in set (0.00 sec)

결과 해석

위 결과는 급여가 20000을 초과하는 직원이 총 4명임을 보여줍니다. Gaurav(50000), Advik(25000), Aarav(65000), Mohan(30000) 네 명이 해당되며, 나머지 행들은 조건이 거짓이거나 NULL이므로 합산에서 제외됩니다.

참고로 NULL 값이 있는 행은 조건 평가 결과도 NULL이 되어 집계에 포함되지 않으므로, 별도의 처리 없이도 자연스럽게 제외됩니다. 이처럼 SUM() 함수와 조건식을 조합하면 COUNT(CASE WHEN ...) 구문보다 간결하게 조건부 카운트를 구현할 수 있습니다.