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);
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이된다.
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 값이 있으면 그 행은 제외되고 결과에 영향을 끼침