簡體   English   中英

創建SQL查詢以進行求和

[英]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

為清楚起見:

  • 玩家主人的計算是(32/32)+(25/25)= 2.000
  • 玩家SimJoo的計算是(20/32)+(23/25)= 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

在sqlfiddle上的例子

根據您的描述,這需要兩個聚合和一個連接:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM