[SQLP]SUM()함수에서 NULL값의 처리

·2025년 1월 4일

SQLP

목록 보기
2/20

🤷‍♂️ 발단

SUM(col1+col2)랑 SUM(col1)+sum(col2)의 차이에 대해 알아보려고 한다.

  • 테스트 데이터
-- 테이블 생성
CREATE TABLE test_table (
    id NUMBER,
    col1 NUMBER,
    col2 NUMBER
);

-- 데이터 삽입
INSERT INTO test_table (id, col1, col2) VALUES (1, 10, NULL);
INSERT INTO test_table (id, col1, col2) VALUES (2, NULL, 20);
INSERT INTO test_table (id, col1, col2) VALUES (3, 30, 30);
INSERT INTO test_table (id, col1, col2) VALUES (4, NULL, NULL);
INSERT INTO test_table (id, col1, col2) VALUES (5, 50, NULL);

😺SUM(col1) + SUM(col2)

SELECT SUM(col1) + SUM(col2) AS total_sum
FROM test_table;

col1의 합계와 col2의 합계를 각각 구한 후, 그 값을 더한다. NULL 값은 합계에 포함되지 않으므로, NULL이 있는 행은 제외된다.
따라서,
SUM(col1) = 10 + 30 + 50 = 90
SUM(col2) = 20 + 30 = 50
90 + 50 = 140이된다.

😺SUM(col1+col2)

SELECT SUM(col1 + col2) AS total_sum
FROM test_table;

이 쿼리에서 col1 + col2의 합을 먼저 구한 후, 그 값들의 합계를 구한다.
NULL이 포함되면 col1 + col2가 NULL이 되어 해당 행은 합계에 포함되지 않는다.
따라서
첫 번째 행: 10 + NULL → NULL
두 번째 행: NULL + 20 → NULL
세 번째 행: 30 + 30 → 60
네 번째 행: NULL + NULL → NULL
다섯 번째 행: 50 + NULL → NULL

SUM(col1 + col2)는 60만 포함되고 나머지는 NULL이므로 최종 합계는 60이 된다.

🛠️정리

  • SUM(col1) + SUM(col2)는 각 컬럼의 합을 구한 후 더하므로 NULL 값을 무시

  • SUM(col1 + col2)는 col1과 col2의 값을 먼저 더한 후 합계를 구하므로, NULL 값이 있으면 그 행은 제외되고 결과에 영향을 끼침

profile
냐홍

0개의 댓글