2012-08-29 3 views
0

내가이첫 번째 열이 동일한 경우 두 번째 열로 MySQL 그룹?

id | rating 
1 | 1 
1 | 3 
1 | 1 
1 | 2 
2 | 3 
2 | 3 
2 | 1 

처럼 등 보이는 테이블이, 당신은 아이디어를 얻을.

어쨌든, 난

id | rating | num 
1 | 1  | 2 
1 | 3  | 1 
1 | 2  | 1 
2 | 3  | 2 
2 | 1  | 1 

그럼, 내가 원하는 것은 그룹은이 결과로 끝날으로 설정하고자하는 등급의 함께 한 ID가 같은 그대로!

난 그냥 group by id, rating을 할 수 있다고 생각하고 그냥 두 열이 동일 경우에만 그룹 것이라고 가정하지만, 두 열이 같은 경우는 내가

id | rating | num 
1 | 1  | 7 

와 끝까지 그 그룹을하지 않습니다 이 문제를 어떻게 해결할 수 있습니까?

+0

수 있습니다 시도 할 수 : 단지 철저한 것으로,

select id, rating, COUNT(rating) as num FROM rating GROUP BY id, rating ORDER BY id, rating ASC; 

을 그리고, 여기 내 전체 테스트 세션 시도한 검색어를 게시 하시겠습니까? – Omesh

+0

네, 쿼리에 구문 오류가 있거나 하위 쿼리이고 추가 집계가 진행되고있는 것처럼 보입니다. 'GROUP BY id, rating'부분이 올바른 구문을 의심하지 않으므로 당신이 원하는 것을 위해. –

답변

4

나는 당신이 가지고있는 문제점을 이해하지 못합니다. 이 쿼리는 나를 위해 작동 :

mysql> create table rating (id int, rating int); 
Query OK, 0 rows affected (0.04 sec) 

mysql> insert into rating values (1,1),(1,3),(1,1),(1,2),(2,3),(2,3),(2,1); 
Query OK, 7 rows affected (0.00 sec) 
Records: 7 Duplicates: 0 Warnings: 0 

mysql> select id, rating, COUNT(rating) as num FROM rating GROUP BY id, rating; 
+------+--------+-----+ 
| id | rating | num | 
+------+--------+-----+ 
| 1 |  1 | 2 | 
| 1 |  2 | 1 | 
| 1 |  3 | 1 | 
| 2 |  1 | 1 | 
| 2 |  3 | 2 | 
+------+--------+-----+ 
5 rows in set (0.00 sec) 
+1

http://sqlfiddle.com/#!2/e9f90/1 –

+0

고맙습니다. @lc. 나는 그것이 나의 크기 문턱을 넘지 않았다고 생각한다. –

+0

하지만 다시, sqlfiddle에는 그 이상의 가치가 있습니다. 건배! –

1
SELECT id,rating,count(rating) from table group by id,rating 
3

당신이

SELECT id,rating,COUNT(rating) AS num 
FROM table1 
GROUP BY id,rating 
ORDER BY id ASC 

SQLFiddle Demo

관련 문제