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

MySQL SUM() 함수 내 표현식, 어떻게 평가될까?

SUM() 함수 내 표현식의 평가 방식

MySQL에서 SUM() 함수 안에 표현식(expression)을 포함하면, MySQL은 각 행(row)의 데이터에 대해 해당 표현식을 개별적으로 평가한 후, 그 결과값들의 총합을 최종적으로 반환합니다.

이를 쉽게 이해하기 위해 다음과 같은 데이터를 가진 '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() 함수 사용 예시

이제 위 테이블에서 각 직원의 급여에서 1,000루피를 공제한 금액을 기준으로 전체 직원의 총 급여를 구하고 싶다고 가정해 보겠습니다. 이 경우 SUM() 함수 내부에 'Salary-1000'이라는 표현식을 넣어 계산할 수 있습니다.

다음 쿼리는 각 행마다 급여에서 1,000을 차감한 값을 모두 더한 결과를 반환합니다.

mysql> Select SUM(Salary-1000) from Employee;
+------------------+
| SUM(Salary-1000) |
+------------------+
|            204000 |
+------------------+
1 row in set (0.05 sec)

결과 해석

위 결과에서 알 수 있듯이, MySQL은 SUM(Salary-1000) 표현식을 만나면 먼저 모든 행에 대해 Salary-1000 연산을 수행한 뒤, 그 값들을 합산하여 204,000이라는 최종 결과를 반환했습니다.

참고로 급여가 NULL인 직원(Aryan, Vinay)의 경우, NULL-1000 역시 NULL이 되며 SUM() 함수는 NULL 값을 자동으로 무시하고 계산하기 때문에 전체 합계에는 영향을 주지 않습니다.