SQLite Query: Как узнать среднее значение последних X записей для каждого человека - PullRequest
2 голосов
/ 24 июля 2010

Допустим, у меня есть две таблицы SQLite:

Table Players
id|name

Table Scores
id|player_id|score|timestamp

Как будет выглядеть запрос SQLite, если я хочу рассчитать средние оценки для каждого игрока, но только из 5 их последних результатов. У меня есть рабочий запрос, который работает только для вычисления среднего значения по всем оценкам (с использованием оценки GROUP BY и AVG (оценка)).

В основном мне нужно сделать оператор SELECT, который сначала возвращает последние 5 баллов для всех игроков, а затем группирует результаты по игрокам и усредняет результаты, но не уверен, как начать. Спасибо.

Ответы [ 2 ]

2 голосов
/ 24 июля 2010
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

Предполагается, что поле идентификатора счета является идентификатором счета

1 голос
/ 26 июля 2010

Как насчет этого ...

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...