MySQL:每个用户最近10个条目?

时间:2010-01-12 01:57:34

标签: sql mysql aggregate average

我有一个存储用户交易数据的表。要查找用户评分,请获取该用户最近10个条目的平均分数。有没有办法通过SQL获得它?

我需要能够根据他们的ID为单个用户解决问题。并获得按其分数排序的所有用户的列表。

目前我正在MySQL外部进行处理,并将其存储在每个用户的另一个col中,以便我可以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 个答案:

答案 0 :(得分:3)

使用:

  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 :(得分:1)

只需合并已使用的两个查询:

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无论是识别身份证如何。是