오늘은 내가 잊어버리지 않도록 간단하게 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 |