2010-07-24 19 views
2

比方说,我有两个SQLite的表:SQLite的查询:如何找出的最近的X记录的平均每个人

 
Table Players 
id|name 

Table Scores 
id|player_id|score|timestamp 

将一个SQLite查询看起来像什么,如果我想计算平均成绩对于每个球员来说,但只有他们最新的5分。我有一个工作查询只能计算所有分数的平均值(使用GROUP BY分数和AVG(分数))。

基本上我需要做一个SELECT语句,首先返回所有玩家的最后5个分数,然后按玩家分组结果并平均分数,但不知道如何开始。谢谢。

回答

1

这个怎么样...

SELECT id, 
     name, 
     (SELECT AVG(score) 
      FROM Scores 
      WHERE Scores.player_id = Players.id AND 
        Scores.id IN (SELECT id 
            FROM Scores Sc 
            WHERE Sc.player_id = Players.id 
            ORDER BY timestamp DESC 
            LIMIT 5)) 
    FROM Players; 
2
SELECT p.id, p.name, avg(s.score) 
FROM Players p 
JOIN Scores s ON p.ID = s.Player_id 
WHERE 4 < (SELECT count(*) from Scores s1 WHERE s.player_id = s1.player_id AND s.timestamp < s1.timestamp) 
p.GROUP BY p.id 

这假设得分ID字段比分

+0

+1看起来的ID格式:) – Andomar 2010-07-24 15:15:19

+0

其实,没有之后,我忘记加入内部表。卫生署! – deinst 2010-07-24 15:18:02

相关问题