본문 바로가기
데이터베이스[DB]/MSSQL

[MSSQL] SUM, ISNULL

by 낭만의개꿈 2024. 3. 28.

 

SQL 에서 많이 사용하는 집계함수로 SUM이 있다. 데이터의 합계를 구하기 위해 주로 사용된다.

집계 함수를 사용할 때에 NULL 값을 무시한다는 부분이 우리가 조심해야 할 부분인데 오늘은 NULL 을 무시하는 부분과 어떻게 처리하면 좋을 지 함께 확인하도록 하자

TEST Table & Data Create
CREATE TABLE #tmp_data
(
	cust_id int,
	cust_name varchar(10),
	cust_date varchar(10),
	cust_eng int,
	cust_math int
)

INSERT INTO #tmp_data VALUES (1,'홍길동',NULL,70,85)
INSERT INTO #tmp_data VALUES (2,'홍길동','2024-02-01',75,95)
INSERT INTO #tmp_data VALUES (3,'홍길동','2024-03-01',80,NULL)
INSERT INTO #tmp_data VALUES (4,'임꺽정','2024-01-01',100,80)
INSERT INTO #tmp_data VALUES (5,'임꺽정','2024-02-01',97,83)
INSERT INTO #tmp_data VALUES (6,'임꺽정','2024-03-01',NULL,78)
INSERT INTO #tmp_data VALUES (7,'임꺽정','2024-04-01',88,92)

#tmp_data 데이터 생성 조회

 

시험점수별 합산 구하기 ( SUM )
SELECT *, cust_eng + cust_math as total
  FROM #tmp_data

 

total ( SUM ) 조회

 

위에서 SUM 을 이용하여 total 값을 구하여서 확인해보면 영어점수 ( cust_eng ), 수학점수 ( cust_math ) 의 항목에 점수가 제대로 기재되지 않고, NULL 이 포함되어 있으면 다른 하나의 점수가 존재하더라도 total 값이 NULL 로 표기되는 것을 확인할 수 있다.

이 부분이 바로 NULL 값을 집계 대상에서 제외처리하기 때문에 발생하는 부분이라고 볼 수 있다.

이와 같은 상황을 처리하기 위해 우리는 IsNull 함수를 이용하여 처리하도록 하자.

IsNull 을 이용한 시험점수별 합산 구하기 ( SUM )
SELECT *, 
	IsNull(cust_eng,0) + IsNull(cust_math,0) as total
  FROM #tmp_data

 

IsNull 을 이용한 total ( SUM ) 조회

 

이처럼 IsNull 을 이용하면 Null 값을 0 으로 변경하여 합산을 처리하기 때문에 total 항목이 모두 조회되어 표기되는 것을 확인할 수 있다.