네이버지식인에 올라온 질문사항이 있어서 테스트 해보고 올려둔다.
1. 테이블 생성
CREATE TABLE IF NOT EXISTS `test` (
`uid` int(11) NOT NULL AUTO_INCREMENT,
`id` varchar(20) NOT NULL,
`count` int(11) NOT NULL,
`state` varchar(10) NOT NULL,
PRIMARY KEY (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ;
INSERT INTO `test` (`uid`, `id`, `count`, `state`) VALUES
(1, 'test1', 6, 'a'),
(2, 'test2', 6, 'a'),
(3, 'test1', -1, 'b'),
(4, 'test2', -2, 'b'),
(5, 'test2', -1, 'b'),
(6, 'test3', 5, 'a'),
(7, 'test3', 2, 'a'),
(8, 'test3', -3, 'b');
2. 쿼리문 작성
쿼리문은 phpMyAdmin 에서 하면 편하고 좋다.
원하는 결과를 얻기 위해 하나씩 쿼리문을 입력하면서 확인한다.
SELECT id, sum(count), state FROM test group by id;
SELECT id, sum(count), state FROM test where state='a' group by id;
SELECT id, sum(count), state FROM test where state='b' group by id;
그런 다음에 실제 구하려는 쿼리문을 작성한다.
SELECT id, sum(case when state='a' then count else 0 end) as a_count, sum(case when state='b' then count else 0 end) as b_count FROM test group by id;
또는
SELECT id, sum(if(state='a', count, 0)) as a_count, sum(if(state='b', count, 0)) as b_count FROM test group by id;
자료를 검색해서 찾는 방법
구글에서 검색어 sql sum if condition 를 입력하고 자료를 찾으면 내가 원하는 걸 찾아볼 수 있다.
키포인트는 sum 인데 조건 sum 인거다. 그러므로 조건이 들어가는 sum 과 if 를 검색해보면 된다.
CASE WHEN 은 http://link2me.tistory.com/516 참조하면 된다. 하지만 이해가 부족할 수 있다. 구글링으로 게시글 읽어보고 원하는 걸 얻으면 된다.
'SQL' 카테고리의 다른 글
[MySQL] SQL 모음 (0) | 2016.09.23 |
---|---|
엑셀에서 INSERT 쿼리문 만들기 (0) | 2016.07.29 |
[MySQL] Self Join 예제 (0) | 2016.02.22 |
[MySQL] order by 정렬 (0) | 2016.01.26 |
MySQL Update Where 조건절 Subquery (1) | 2016.01.22 |