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)
시험점수별 합산 구하기 ( SUM )
SELECT *, cust_eng + cust_math as total
FROM #tmp_data
위에서 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 을 이용하면 Null 값을 0 으로 변경하여 합산을 처리하기 때문에 total 항목이 모두 조회되어 표기되는 것을 확인할 수 있다.
'데이터베이스[DB] > MSSQL' 카테고리의 다른 글
[MS-SQL] NEWID() - 랜덤함수 (0) | 2024.06.25 |
---|---|
[MSSQL] REPLACE - 문자열 치환 함수 (0) | 2024.06.24 |
[MSSQL] 특정 컬럼명이 포함된 테이블 검색 (0) | 2024.06.14 |
[MSSQL] 프로시저 내부의 문자열 검색 (0) | 2024.06.13 |
[MSSQL] MAX, MIN ( 집계함수 ) (0) | 2024.03.27 |
[MSSQL] SET ROWCOUNT n (0) | 2024.03.19 |
[MSSQL] 전체테이블, 프로시저, 인덱스 등 생성 스크립트 (0) | 2024.03.17 |
[MSSQL] CONVERT - 문자열날짜변환 (0) | 2024.03.16 |