MySQL: последние 10 записей на пользователя? - PullRequest
2 голосов
/ 12 января 2010

У меня есть таблица с данными о транзакциях для пользователей. Чтобы найти рейтинг пользователя, вы берете средний балл за последние 10 записей для этого пользователя. Есть ли способ получить это с помощью SQL?

Мне нужно, чтобы он мог работать для одного пользователя с учетом его идентификатора. И получить список всех пользователей, упорядоченных по их счету.

В настоящее время я работаю с ним вне MySQL и храню его в другом столбце для каждого пользователя, чтобы я мог ORDER_BY.

# returns average for all transactions.
SELECT user_id, AVG(score) FROM transactions WHERE user_id = 1
# returns scores for last 10 transactions.
SELECT user_id, score FROM transactions WHERE user_id = 1 ORDER_BY date DESC LIMIT 10

Ответы [ 2 ]

3 голосов
/ 12 января 2010

Использование:

  SELECT x.user_id,
         AVG(x.score)
    FROM (SELECT t.user_id,
                 t.score
            FROM TRANSACTIONS t
           WHERE t.user_id = ?
        ORDER BY t.date
           LIMIT 10) x
GROUP BY x.user_id
1 голос
/ 12 января 2010

Просто объедините два запроса, которые уже используются:

SELECT user_id, AVG(score)
FROM transactions
WHERE rowid in (
    SELECT rowid
    FROM transactions
    WHERE user_id = 1
    ORDER_BY date DESC
    LIMIT 10)

, где rowid является любым идентифицирующим И.Д. есть.

...