0

私はこのようなテーブルを持っています

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

どうすればこれを解決できますか?

4

3 に答える 3

4

私はあなたが抱えている問題を理解していません。このクエリは私のために働きます:

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

そして、念のために、これが私のテストセッション全体です。

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)
于 2012-08-29T05:40:13.037 に答える
3

あなたは試すことができます

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

SQLFiddleデモ

于 2012-08-29T05:46:14.543 に答える
1
SELECT id,rating,count(rating) from table group by id,rating
于 2012-08-29T05:37:56.250 に答える