SQL

null, coalesce

content0474 2024. 9. 1. 12:50

데이터의 값이 상식적이지 않아서 제외하고 싶거나 다른 값으로 대체하고 싶을 수 있다

제외하는 법

1. if 문

if(rating<>'not given', rating, null)

: rating의 값이 not given이 아니면 rating을 그대로 쓰고, not given이면 제외해(=null)

 

이 문법을 쓰지 않으면 not given은 모두 0으로 간주해서 계산된다.

즉 {not given, 1, 2, 5, not given, 6} 이라는 데이터가 있을 때 이들의 평균을 계산하면 (0+1+2+5+0+6)/6 으로 계산된다

하지만  null로 처리한 후 계산하면 (1+2+5+6)/4 로 계산된다. 

 

2. where 절의 null

select *

from customers

where age is not null

: age가 null 아닌 데이터만 가져와

 

대체하는 법

1. if 문

if(rating<>'not given', rating, 0)

: rating의 값이 not given이 아니면 rating을 그대로 쓰고, not given이면 0점으로 계산해

 

2. coalesce

coalesce: 병합하다

coalesce (컬럼, 대체값) = 컬럼의 값이 null일 때 대체값으로 바꿔줘

 

select age,

          coalesce (age, 20)

from customers

: 나이가 null일때는 나이를 20살인걸로 간주하자