这是我的 table
http://www.sqlfiddle.com/#!2/47e2d/8
╔════╦══════════╦════════╦═══════╦════════╗
║ id ║ category ║ userid ║ users ║ points ║
╠════╬══════════╬════════╬═══════╬════════╣
║ 1 ║ 2 ║ 91 ║ user1 ║ 100 ║
║ 2 ║ 3 ║ 92 ║ user2 ║ 80 ║
║ 3 ║ 4 ║ 93 ║ user3 ║ 10 ║
║ 4 ║ 4 ║ 91 ║ user1 ║ 12 ║
╚════╩══════════╩════════╩═══════╩════════╝
如何获得每个类别中得分最高的用户的计数结果?
在上面的例子中,我想得到
user1: 2
user2: 1
在一段时间后在stackoverflow中搜索类似的问题后,我想到了
SELECT users, COUNT(*)
FROM `table`
WHERE points=(SELECT MAX(points) FROM `table`)
GROUP BY points;
但这并不能产生我想要的东西。
试试这个:
SELECT
users,
COUNT(*)
FROM
(SELECT
users,
COUNT(*) COUNT
FROM
`table`
WHERE points IN
(SELECT
MAX(points)
FROM
`table`
GROUP BY category)
GROUP BY points) temp
GROUP BY users ;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句