조건별 SUM SQL

SQL 2016. 7. 27. 17:18
728x90

네이버지식인에 올라온 질문사항이 있어서 테스트 해보고 올려둔다.


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
블로그 이미지

Link2Me

,