질문&답변
SUM() 함수 문의
다른 분의 질문에 죄송합니다. 저도 비슷한 궁금증이 있었는데 덕분에 해결되었어요! 그런데 추가질문이 있어 이렇게 글을 남깁니다 ㅠㅠ 제가 느끼기로는 mysql 자체에서 GROUP BY를 실행할 경우, 한 카테고리에 여러 값이 있을 때 맨 위의 값만 출력하는 경우가 종종 있는 것 같더라고요. 예를 들어 해당 문제에서, id로 GROUP BY를 실행할 경우 단순히 revenue와 month를 출력하라고 명령했을 때 맨 위의 revenue 8000, month Jan만 출력합니다. SELECT id,revenue,month FROM DEPARTMENT GROUP BY id 이 경우 출력되는 값은 {"headers": ["id", "revenue", "month"], "values": [[1, 8000, "Jan"], [2, 9000, "Jan"], [3, 10000, "Feb"]]} 이렇게요. 그러니까 id =1 인 revenue 7000 month Feb나 revenue 6000 month Mar는 아예 출력되지 않는 것 같습니다. 이게 인터프리터 오류인지 혹은 원래 그렇게 설계된 것인지는 모르겠으나, 이러한 현상이 다른 때에도 종종 발생하는 경우를 접했습니다. 어쨌든 이러한 현상 때문에 SUM과 같은 집계함수를 해야하는 것 같는데, 혹시 맞나요? 아까의 예를 다시 설명하자면, 아까와 같은 코드로 하되 revenue가 아닌 SUM(revenue)를 출력하면 {"headers": ["id", "SUM(revenue)", "month"], "values": [[1, 21000, "Jan"], [2, 9000, "Jan"], [3, 10000, "Feb"]]} 이렇게 정상적으로 전체 revenue 값이 출력되는 것처럼요. 정리하자면 GROUP BY 함수를 사용할 때 맨 위의 데이터만 출력하는 현상이 존재하고, 집계함수를 사용하여 데이터를 전체적으로(?) 한번 더 읽어주는 것이 맞나요? 또 이걸 작성하면서 생긴 궁금증인데.. SELECT문에서 CASE WHEN month='Jan' THEN revenue ELSE NULL END 을 사용함으로써 ID로 GROUP BY된 테이블 속 Jan가 아닌 데이터들의 revenue 값이 다 NULL로 표시하는데요, 이는 원래의 department 자체를 변화시키는 건 아닌거죠? raw data를 가져오기만 하는 것이 맞나요?
- 좋아요수
- 4
- 댓글수
- 5
- 조회수
- 598





