2012-09-08 6 views
3

personidmsg 컬럼이있는 테이블이 있습니다.카운트가 다른 레코드 얻기

personid, msg 
-------------- 
1,  'msg1' 
2,  'msg2' 
2,  'msg3' 
3,  'msg4' 
1,  'msg2' 

나는 각 personid에 대한 총 msg을 싶어. 나는이 쿼리를 시도하고있다 :

select distinct personid, count(*) 
FROM mytable; 

내가이 쿼리를

select distinct personid, count(msg) 
FROM mytable; 

을 시도하지만 실제 결과를 얻고 있지.

id, count 
-------- 
1, 2 
2, 2 
3, 1 

답변

5

당신은 단지 GROUP BY 대신 DISTINCT를 사용해야합니다 : 나는 위의 데이터에 대한이 결과를 원한다. 그래서이 쿼리를 시도 :

SELECT personid, COUNT(msg) 
FROM mytable 
GROUP BY personid 
ORDER BY personid; 

See this SQLFiddle

GROUP BY 당신이 집계 함수를 사용할 수 있습니다, AVG()는, MAX(), MIN(), SUM()COUNT() 등이 DISTINCT 그냥 중복을 제거하는 동안처럼.

+0

고맙습니다. hims056 – Pankaj

+1

@Downvoter, Care to comment? – hims056