HoneyBee

Mysql rollup 사용시 주의사항 본문

SQL/Mysql

Mysql rollup 사용시 주의사항

아포갸토 2021. 5. 10. 11:07

모두가 알고 있겠지만 항목들에 대한 합계, 소계를 하기 위해서는 rollup을 사용하게 된다.

그러나 곱하기 연산이 들어간 상황에서 sum을 할때 잘못된 값이 합계되는 경우가 있어 작성한다.

 

 

* 테이블 설정

test스키마에 test2 테이블의 컬럼과 데이터다

 

 

 

--item_qty1와 item_qty2 를 rollup 하고 싶은 상황이다.

select
	item_qty1,
	item_qty2,
	sum(item_qty1) * sum(item_qty2 ) as item_qty4
from
	test.test2 t
	group by item_qty1,item_qty2 with rollup 

 

-> 여기서는 sum을 두개 사용하다보니

sum(item_qty1) = 6 , sum(item_qty2) = 9

6 * 9 = 54

그래서 54 라는 값이 나오게 된것

 

select
	item_qty1,
	item_qty2,
	sum(item_qty1 * item_qty2 ) as item_qty4
from
	test.test2 t
	group by item_qty1,item_qty2 with rollup 

그래서 곱하기를 사용한 상태에서 정상적인 값을 출력하고 싶다면 곱하기 한 값을 전체로 sum을 해주어야 제대로 된 rollup 결과를 볼수가 있다.

 

 

 

 

사실 이것을 알게 된것은 회사에서 postgresql을 사용하다가 발견한 문제인데 postgresql도 동일하니 조심해서 사용하길 바란다. 이상 끝

'SQL > Mysql' 카테고리의 다른 글

Mysql 코딩테스트 연습 in 프로그래머스'  (0) 2021.05.11