首页 文章

SQLite查询:如何找出每个人的最后X条记录的平均值

提问于
浏览
2

假设我有两个SQLite表:

Table Players
id|name

Table Scores
id|player_id|score|timestamp

如果我想计算每个玩家的平均得分,但只有5个最新得分,那么SQLite查询会是什么样子 . 我的工作查询只能用于计算所有分数的平均值(使用GROUP BY分数和AVG(分数)) .

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

2 回答

  • 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字段是得分的id

相关问题