[SQL] NULL 값의 사칙연산에 대해

JIEUN KANG·2021년 1월 13일
0

오늘 스터디에서 가장 흥미로웠던 것!
1월부터 12월까지의 revenue를 재정렬하는 문제에서, null을 어떻게 연산해줄수 있을까? 에 대한 이야기가 나왔다!
내 머릿속 null은 마치 0과 같은 int였는데,
생각해보니 null은 '데이터가 아예 존재하지 않는 것' 이라는 것을 깨닫게 되었다.

SELECT id,
       SUM(CASE WHEN month = 'Jan' THEN revenue ELSE NULL END) 'Jan_Revenue',
       SUM(CASE WHEN month = 'Feb' THEN revenue ELSE NULL END) 'Feb_Revenue',
       SUM(CASE WHEN month = 'Mar' THEN revenue ELSE NULL END) 'Mar_Revenue',
       SUM(CASE WHEN month = 'Apr' THEN revenue ELSE NULL END) 'Apr_Revenue',
       SUM(CASE WHEN month = 'May' THEN revenue ELSE NULL END) 'May_Revenue',
       SUM(CASE WHEN month = 'Jun' THEN revenue ELSE NULL END) 'Jun_Revenue',
       SUM(CASE WHEN month = 'Jul' THEN revenue ELSE NULL END) 'Jul_Revenue',
       SUM(CASE WHEN month = 'Aug' THEN revenue ELSE NULL END) 'Aug_Revenue',
       SUM(CASE WHEN month = 'Sep' THEN revenue ELSE NULL END) 'Sep_Revenue',
       SUM(CASE WHEN month = 'Oct' THEN revenue ELSE NULL END) 'Oct_Revenue',
       SUM(CASE WHEN month = 'Nov' THEN revenue ELSE NULL END) 'Nov_Revenue',
       SUM(CASE WHEN month = 'Dec' THEN revenue ELSE NULL END) 'Dec_Revenue'
FROM department
GROUP BY id

여기선 group by에 대응할 수 있게 sum()을 사용해주고 있는데,

null + 3 = null
null - 3 = null

즉, 어떤 식으로 연산해도 답은 null이라는 것!

sum() 등의 집계함수에서는 마치 없는것처럼 데이터가 계산된다고 한다!
null 값을 제외하는 식의 쿼리만 작성해봤기 때문에, 연산에 대해 생각을 해보지 못했던 것 같다.

profile
가장 보통의 존재

0개의 댓글