2013-03-09 36 views
3
類別

我有下面的表:MySQL的:SUM 3個記錄每

dayoftheweek (VARCHAR) 
player (VARCHAR) 
score (INT) 

對於每個播放器,有或者3,4或5的分數。 我必須計算每位玩家每週最佳3分的平均值。

我正沿

SELECT dayoftheweek, player, (SUM(score)/3) AS average_score 
FROM (SELECT dayoftheweek, player, score 
     FROM scoretable 
     GROUP BY dayoftheweek, player 
     ORDER BY score 
     LIMIT 0, 3) AS query 

但(顯然),只有給我的前三個記錄總體思路思考.. 有人可以把我在正確的方向嗎?

乾杯,馬塞爾

回答

2

你應該能夠編寫:

SELECT dayoftheweek, 
     player, 
     (SELECT AVG(score) 
      FROM (SELECT inner.score 
        FROM scoretable AS inner 
        WHERE inner.dayoftheweek = outer.dayoftheweek 
        AND inner.player = outer.player 
        ORDER 
         BY inner.score DESC 
        LIMIT 3 
       ) 
     ) AS best_score_avg 
    FROM scoretable AS outer 
; 

(免責聲明:沒有測試)

請注意,我用ORDER BY ... DESC拿到三個最大得分,但如果這些是高爾夫分數或者其中最好的分數是至少那些,那麼您將想要將DESC更改爲ASC(或只是刪除它)。