[컴][Database] record 의 전체에 count() 를 추가하기

SQL 문으로 COUNT() 를 하는 경우에 대부분 count 된 record 가 하나로 묶여서 계산되어진다. 그런데 이렇게 묶지 않은 상태에서 각 record 에 COUNT() column 을 추가시키고 싶을 때가 있다. 이런 경우에 대한 해답을 ref. 1 에서 제공하고 있다.

결론부터 정리하면, 먼저 COUNT() 를 통해 record 가 묶인 상태가 되는 것은 어쩔 수 없기 때문에 일단 COUNT() 를 구한다. 근데 이때 기존의 table 과 묶을 수 있는 조건으로 사용될 만한 column 을 SELECT 에 추가 한다.(primary key 등)

이렇게 나온 table 을 기존의 table 과 함께 SELECT 를 하면서 조건(WHERE)에 "primary key 이 같은 경우" 등을 넣어서 기존의 table 과 묶어주면 된다. 그러면 기존의 table 에 COUNT() 가 추가된 형태로 새로운 테이블이 보일 것이다.

예를 들어 보자.
...

SELECT domain_count, a.customer_id, svc_full_url
FROM
t_cdn_domain_info a,
(SELECT customer_id, COUNT(domain_seq) AS domain_count
FROM t_cdn_domain_info 
WHERE customer_id = 11) AS b
WHERE a.customer_id=b.customer_id



Reference


  1. http://stackoverflow.com/questions/1261189/mysql-count-entries-without-grouping

댓글 없음:

댓글 쓰기