상세 컨텐츠

본문 제목

[SQL] null 값 대체 : coalesce, isnull, if, case

SQL

by ollive 2024. 6. 24. 21:59

본문

# [SQL 과제] Lv3. 이용자의 포인트 조회하기


<상황>

이번에는 이용자들 별로 획득한 포인트를 학생들에게 이메일로 보내려고 합니다. 이를 위한 자료를 가공해봅시다. 특히 users 테이블에는 있으나 point_users 에는 없는 유저가 있어요. 이 유저들의 경우 point를 0으로 처리합시다.

<문제>

- users 테이블에는 있지만 point_users에는 없는 user는 포인트가 없으므로 0 으로 처리
- 포인트 기준으로 내림차순 정렬

 

<풀이1 coalesce 이용>

coalesce 는 해당 Column의 값이 NULL을 반환할 때, 다른 값으로 출력할 수 있도록 하는 함수이다.

SQL 코드 - coalesce(Column, 대체 값)

null 값을 0으로 대체하기 위해 coalesce 함수를 사용하여 point의 null값을 0으로 바꿔주었다.

 

point 열의 null값이 repoint열에서는 0으로 바뀐 것을 확인 할 수 있다.

 

 

 

<풀이2 if 이용>

다른 방식으로 풀어보기 위해서 if를 사용해 보았다.

If는 지정된 조건이 참인지, 거짓인지에 따라 다른 값을 도출하는 함수이다.

if(조건문, Ture일때 출력될 값, False일때 출력될 값)

오류를 얻었다.

 

null 값을 선택하기 위해서는 조건에 isnull을 사용하여야 한다고 구글링을 통해 찾았다!

isnull(칼럼)

coalesce 함수를 사용했을 때와 같은 결과 값이 나왔다.

 

 

 

<풀이3 case 이용>

조건문이라면 case를 이용할 수도 있다.

case는 여러 조건을 지정하여 각 조건별 값을 다르게 주는데 사용할 수 있다.

case when 조건 then 출력될 값 else 그외 값들에 출력될 값 end

if를 사용한 풀이와 같은 결과가 도출되었다. 

 

null 값을 대체하기 위해 사용할 수 있는 함수를 이용해 풀이를 진행해 보았다.

관련글 더보기