0

试图弄清楚我将如何根据每个人所做的“工作”量来生成和排序用户名列表。

考虑一张桌子,股票。除其他外,每个共享都包含用户名和难度(这是一个数字,2 的平方)。我想将信用分配给用户(并订购列表),因为 COUNT(username) 乘以难度。

这是我当前的查询,不考虑难度。我无法在不导致错误的情况下进行进一步的分组/加入。

SELECT username, COUNT(username) AS occurences
FROM shares
GROUP BY username
ORDER BY occurences DESC

用户可以在多个困难中提交共享。目标是将具有最高“共享时间难度”数字的用户排在第一位,而将其排在最后。

如果可以显示每个用户最受欢迎的难度,则可获得奖励积分。谢谢!

4

1 回答 1

1

听起来您的文件有多个用户记录,每个记录的难度都不同。您想要聚合难度,然后除以该用户的记录数,以计算平均难度。如果这个假设是正确的,你可以使用:

SELECT username, COUNT(username) AS occurences, SUM(difficulty) AS difficulty
  , SUM(difficulty)/COUNT(username) As share_times_difficulty
FROM shares
GROUP BY username
ORDER BY share_times_difficulty DESC

有关详细信息,请参阅此 SqlFiddle

如果假设是错误的,并且您正在寻找不同的东西,请澄清。

于 2013-09-18T19:44:50.110 回答