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

MySQL에서 값이 없을 때 SUM 함수가 0을 반환하도록 하는 방법

MySQL SUM 함수가 NULL 대신 0을 반환하도록 만드는 방법

MySQL에서 SUM() 함수는 집계할 데이터가 전혀 없거나 모든 값이 NULL일 경우 0이 아닌 NULL을 반환합니다. 이런 경우 애플리케이션에서 예기치 않은 오류나 빈 화면이 발생할 수 있습니다. 조회된 값이 없을 때에도 합계를 반드시 '0'으로 받고 싶다면 IFNULL() 또는 COALESCE() 함수를 사용하면 됩니다.

방법 1: IFNULL() 함수 사용하기

IFNULL()은 첫 번째 인수가 NULL일 경우 두 번째 인수로 지정한 기본값을 대신 반환하는 MySQL 전용 함수입니다. 아래는 기본 문법입니다.

SELECT IFNULL(SUM(컬럼명), 0) AS aliasName;

실제로 위 문법을 쿼리에 적용해 보겠습니다.

mysql> SELECT IFNULL(SUM(NULL), 0) AS SUMOFTWO;

위 쿼리의 실행 결과는 다음과 같으며, NULL이 아닌 0이 정상적으로 반환됩니다.

+----------+
| SUMOFTWO |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

방법 2: COALESCE() 함수 사용하기

COALESCE()는 표준 SQL 함수로, 인수 목록 중에서 NULL이 아닌 첫 번째 값을 반환합니다. 따라서 SUM의 결과가 NULL일 경우 그다음 인수인 0이 반환되는 원리입니다.

mysql> SELECT COALESCE(SUM(NULL), 0) AS SUMOFTWO;

실행 결과 역시 동일하게 0이 출력됩니다.

+----------+
| SUMOFTWO |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

실무 활용 예제

실제 업무에서는 특정 조건에 맞는 주문 금액의 총합을 구할 때 유용하게 사용할 수 있습니다. 해당 날짜에 주문이 하나도 없어도 결과가 0으로 나오므로 안전하게 처리할 수 있습니다.

SELECT IFNULL(SUM(price), 0) AS total_price
FROM orders
WHERE order_date = '2024-01-01';

정리

  • SUM()은 집계 대상이 없으면 NULL을 반환합니다.
  • IFNULL(SUM(...), 0) — MySQL 전용 간단한 방법
  • COALESCE(SUM(...), 0) — 표준 SQL 방식으로 다른 DBMS에서도 호환 가능

두 함수 모두 결과는 같으므로, 프로젝트의 DBMS 호환성을 고려해 선택하시면 됩니다.