메뉴 건너뛰기

infra

[mysql] union 으로 sum of sum 구하기

suritam92013.10.24 09:55조회 수 2844댓글 0

    • 글자 크기

아래처럼 한다. tbl.nr 에 sum(cash_mony) 라는 필드명을 쓰면 또 sum이 반영되기 때문에, 명령으로 쓰면 안 되고 해당 컬럼 이름을 변경해 줘야 한다. 내부 쿼리(서브 쿼리)는 tbl 이라는 테이블이 되고, sum(cash_mony)는 nr 이라는 컬럼으로 대체된다. 그러면, tbl.nr 을 sum 해주므로, 아래와 같이 최종 값을 구할 수 있다.


cate가 다른 세 값을 구하려 or 구문을 썼는데, 이상한 값이 나와서, 찾아봤다.


해킹에만 union을 쓸 줄 알았는데, 유용하게 쓰게 되었다. 이젠 union을 해킹에 쓸 수 없을 정도로 방어가 되었기 때문에, 본연의 기능으로 돌아가는 것이다.


SELECT SUM( tbl.nr ) AS nr
FROM (


SELECT SUM( cash_mony ) AS nr
FROM exp
WHERE `cate` = '1001' AND `reg_date` 
BETWEEN '20131001' AND '20131031'
UNION SELECT SUM( cash_mony ) AS nr
FROM exp
WHERE `cate` = '1002' AND `reg_date` 
BETWEEN '20131001' AND '20131031'
UNION SELECT SUM( cash_mony ) AS nr
FROM exp
WHERE `cate` = '1003' AND `reg_date` 
BETWEEN '20131001' AND '20131031'

) AS tbl



suritam9 (비회원)
    • 글자 크기

댓글 달기

첨부 (0)
위로