[英]Creating a SQL query to sum and divide
我有這張桌子:
Username | score | gameid
SimJoo | 14 | 1
SimJoo | 20 | 1
SimJoo | 23 | 2
Master | 32 | 1
Master | 25 | 2
Master | 9 | 2
對於每個玩家,我需要每個游戲玩家的玩家得分最高的總和除以該游戲玩家獲得的最高分數。 這對於任何數量的不同玩家來說都是得分和游戲。
上面的示例表的結果將是:
Username | total score
Master | 2.000
SimJoo | 1.545
為清楚起見:
SELECT Username, SUM((SELECT MAX(score) WHERE Username=? AND gameid=?)/(SELECT MAX(Score) WHERE gameid=?)) AS total_score
GROUP BY Username
ORDER BY total_score DESC
第一個子查詢返回每個游戲的最大用戶分數。 第二個 - 游戲的最大值
select Username, sum(umax/gmax)
from
(select Username, gameid, max(score) umax
from t
group by Username, gameid
) u
left join
(select gameid, max(score) gmax
from t
group by gameid
) g
on u.gameid = g.gameid
group by Username
根據您的描述,這需要兩個聚合和一個連接:
select t.username, sum(t.score / g.maxscore)
from t join
(select gameid, max(score) as maxscore
from t
group by gameid
) g
on t.gameid = g.gameid
group by t.username;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.