SQL获得表收入最高的前50名排行榜

时间:2019-06-03 12:43:31

标签: mysql sql

因此,我真的不知道如何在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位。我什至不知道这是否可能,我希望是这样。

感谢您的阅读/帮助!

2 个答案:

答案 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