SQL

컬럼의 값이 null경우 치환 하는방법

Ambitions 2020. 7. 24. 18:00

오늘은 내가 잊어버리지 않도록 간단하게 sql에서 컬럼의 값이 null인 경우 값을 치환하는 방법을 정리하려고 한다.

만약 7월한달의 매출총액을 구하는 쿼리를 작성하려면 다음과 같이 작성하게 될 것이다.

select sum(amount) from sales 
where salesDate between '2020-07-01' and '2020-07-31'
group by salesDate;

그런데 여기서 문제가 발생한다, 문제 상황은 7월 10일에 sales라는 테이블에 부가세(tax)라는 컬럼이 추가 되게 되었고 그 컬럼의 기본값은 0이 아닌 null로 설정이 되있다. 그리고 이제부터는 부가세가 포함된 금액을 쿼리로 작성해야 한다면 다음과 같이 작성하게 된다.

select sum(amount + tax) from sales -- tax 컬럼을 추가적으로 더할수있게함.
where salesDate between '2020-07-01' and '2020-07-31'
group by salesDate;

위의 쿼리문을 실행하면 tax의 값이 null인 데이터의 경우는 합계가 되지않고 null이 되게된다.

그래서 이떄 올바른 계산이 실행되게 하려면 tax의 값이 null인 데이터를 0으로 바꿔주면 되는데, 그떄 사용할 수 있는데 ifnull이다. ifnull을 이용해서 쿼리문을 다시작성하면 다음과 같다.

select sum(amount + ifnull(tax,0)) from sales -- tax 컬럼을 추가적으로 더할수있게함.
where salesDate between '2020-07-01' and '2020-07-31'
group by salesDate;

위와 같이 쿼리문을 작성하면 tax의 값이 null인경우 0으로 치환되어 올바른 계산결과가 나오게 된다.

 

'SQL' 카테고리의 다른 글

Sql 집계함수(SUM, AVG, MAX, MIN, COUNT)  (0) 2020.04.21
sql에서 날짜컬럼을 비교하는 방법?  (0) 2020.03.18
SQL에서 null을 조건으로 주는방법?  (0) 2020.02.12
sql에서의 inner join  (0) 2020.02.04