试图弄清楚我如何根据每个人的“工作量”生成和订购用户名列表。
考虑一张表,分享。每个共享包含用户名和难度(数字,2的平方)等。我想将信用额(和订单列表)分配为COUNT(用户名)乘以难度。
这是我当前的查询,它没有考虑难度。我没有能够在不造成错误的情况下进行进一步的分组/加入。
SELECT username, COUNT(username) AS occurences
FROM shares
GROUP BY username
ORDER BY occurences DESC
用户可以在多个困难时提交分享。目标是将具有最高“共享时难度”数的用户排在第一位且最后一位。
如果可以显示每位用户最常用的难度,则可获得积分。谢谢!
答案 0 :(得分: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
有关详细信息,请参阅this SqlFiddle。
如果假设是错误的,并且您正在寻找不同的东西,请澄清。