0

我有一个存储用户给出的评分的表。

例如:

UserId  Rating
 3            1  
 3            2
 1            1
 1            2
 1            3
 1            4
 2            1
 2            23
 2            4

我需要检索评分最大次数的 10 个用户。

例如:

 1 rated 4 times
 2 rated 3 times
 3 rated 2 times...

知道如何使用 mysql 编写查询吗?

4

1 回答 1

2

您必须按用户 ID 分组,计算分组的行数,并按降序排列,然后将查询限制为 10 行:

SELECT userID, count(*) times
FROM users
GROUP BY userID
ORDER BY times DESC
LIMIT 10

如果您需要完全如上所示的输出,请尝试以下操作:

SELECT CONCAT_WS(' ', userID, 'rated', count(*), 'times')
FROM users
GROUP BY userID
ORDER BY count(*) DESC
LIMIT 10

看到这个小提琴

于 2013-02-06T13:04:56.087 回答