因此,我真的不知道如何在SQL中执行此操作,所以这就是为什么我现在在这里。因此,我有一个网站,人们可以在其中赚取积分,所有内容都记录在名为earnings
的表中。表结构为id (uniue), uid, username, amount
。我想创建一个“最赚取积分”的记分板,在这里我要获取总赚取积分和用户名。如何在SQL中执行此操作?
示例:
表格:
id | uid | username | amount
------------------------------
1 | 1 | user1 | 5
2 | 1 | user1 | 1
3 | 2 | user2 | 3
4 | 1 | user1 | 4
5 | 2 | user2 | 10
使用SQL时,结果应为:
user2 | 13
user1 | 10
但是接下来这是一个有1500行的表,排名前50位。我什至不知道这是否可能,我希望是这样。
感谢您的阅读/帮助!
答案 0 :(得分:1)
您可以尝试使用限制50和分组依据来获得合计结果
const thrdUsers = [.....] // socket connections
const onThirdUserConnects = socket => thrdUsers.push(socket);
API.on('connect', onThirdUsersConnects);
// Then you need a broadcast function to send events to all your clients
const broadcastToAPI = (msg, val) => thrdUsers.forEach(s => s.send(msg, val));
// Your users will trigger events to your socket.io service
socket.on('whatever-event', (data) => {
//...Do stuff
// notify the API clients
broadcastToAPI('whatever-event', data);
});
答案 1 :(得分:1)
使用以下查询,您可以获取总值最高的前50个用户名:
SELECT username, SUM(amount) AS amount
FROM earnings
GROUP BY username
ORDER BY SUM(amount) DESC
LIMIT 50