게시글
질문&답변
2020.02.13
SUM() 함수 문의
이해하기 쉽게 설명해주셔서 감사합니다 + ㅅ +!!
- 4
- 5
- 412
질문&답변
2020.02.12
SUM() 함수 문의
넵 에러가 날때의 SQL 코드 (오답 코드) SELECT id , CASE WHEN month = 'Jan' THEN revenue ELSE NULL END AS Jan_Revenue , CASE WHEN month = 'Feb' THEN revenue ELSE NULL END AS Feb_Revenue , CASE WHEN month = 'Mar' THEN revenue ELSE NULL END AS Mar_Revenue , CASE WHEN month = 'Apr' THEN revenue ELSE NULL END AS Apr_Revenue , CASE WHEN month = 'May' THEN revenue ELSE NULL END AS May_Revenue , CASE WHEN month = 'Jun' THEN revenue ELSE NULL END AS Jun_Revenue , CASE WHEN month = 'Jul' THEN revenue ELSE NULL END AS Jul_Revenue , CASE WHEN month = 'Aug' THEN revenue ELSE NULL END AS Aug_Revenue , CASE WHEN month = 'Sep' THEN revenue ELSE NULL END AS Sep_Revenue , CASE WHEN month = 'Oct' THEN revenue ELSE NULL END AS Oct_Revenue , CASE WHEN month = 'Nov' THEN revenue ELSE NULL END AS Nov_Revenue , CASE WHEN month = 'Dec' THEN revenue ELSE NULL END AS Dec_RevenueFROM DEPARTMENTGROUP BY id ----- 위 SQL문 Output {"headers": ["id", "Jan_Revenue", "Feb_Revenue", "Mar_Revenue", "Apr_Revenue", "May_Revenue", "Jun_Revenue", "Jul_Revenue", "Aug_Revenue", "Sep_Revenue", "Oct_Revenue", "Nov_Revenue", "Dec_Revenue"], "values": [[1, 8000, null, null, null, null, null, null, null, null, null, null, null],[2, 9000, null, null, null, null, null, null, null, null, null, null, null],[3, null, 10000, null, null, null, null, null, null, null, null, null, null]]} ------- ------ Expected {"headers": ["id", "Jan_Revenue", "Feb_Revenue", "Mar_Revenue", "Apr_Revenue", "May_Revenue", "Jun_Revenue", "Jul_Revenue", "Aug_Revenue", "Sep_Revenue", "Oct_Revenue", "Nov_Revenue", "Dec_Revenue"], "values": [[1, 8000, 7000, 6000, null, null, null, null, null, null, null, null, null], [2, 9000, null, null, null, null, null, null, null, null, null, null, null],[3, null, 10000, null, null, null, null, null, null, null, null, null, null]]} 위 결과물처럼 1번 Row 의 revenue 2번, 3번 값이 7000, 6000 이 들어가는게 아닌 null 이 들어갑니다,해서 선생님 해설대로 SUM 으로 감싸주었을때는 null 이 아니라 7000,6000 이 출력되면서 정답처리 되는데요! 여기서 어려운것이..저는 시나리오를 아래처럼 생각했는데, Table의 모든 행을 CASE WHEN month = 'Jan' THEN revenue ELSE NULL END AS Jan_Revenue 문으로 돌면서, month 가 Jan 인 Revenue 값을 가져오기 때문에, 별도의 SUM 함수가 없어도 알아서 7000, 6000 의 값이 들어갈것이다그런데 첫번째 값인 8000 을 제외하고는 왜 null이 들어가고, 이걸 해결하기 위해 왜 SUM(), MAX() 등의 함수로 처리해야 하는지 이해가 어렵습니다 ㅠ -- 이하 문제에서의 Table Department table: +------+---------+-------+ | id | revenue | month | +------+---------+-------+ | 1 | 8000 | Jan | | 2 | 9000 | Jan | | 3 | 10000 | Feb | | 1 | 7000 | Feb | | 1 | 6000 | Mar | +------+---------+-------+
- 4
- 5
- 412