MySQL:每个用户最后10个条目?
我有一个为用户存储事务数据的表。要查找用户评分,请获取该用户最近10个条目的平均分。有没有一种方法可以通过SQL实现这一点 我需要能够为给定ID的单个用户计算出它,并获得按分数排序的所有用户的列表 目前,我正在MySQL之外解决这个问题,并将它存储在每个用户的另一个col中,这样我就可以据此订购MySQL:每个用户最后10个条目?,sql,mysql,aggregate,average,Sql,Mysql,Aggregate,Average,我有一个为用户存储事务数据的表。要查找用户评分,请获取该用户最近10个条目的平均分。有没有一种方法可以通过SQL实现这一点 我需要能够为给定ID的单个用户计算出它,并获得按分数排序的所有用户的列表 目前,我正在MySQL之外解决这个问题,并将它存储在每个用户的另一个col中,这样我就可以据此订购 # returns average for all transactions. SELECT user_id, AVG(score) FROM transactions WHERE user_id =
# 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
只需将已经使用的两个查询组合起来:
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是标识ID的任何内容。使用:
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
谢谢,看起来很有希望,但是。。。1235-此版本的MySQL还不支持“LIMIT&IN/ALL/ANY/SOME子查询”,如果找不到更好的方法,我可能需要升级。您使用的MySQL版本是什么?版本14.12发行版5.0.45成功!因此,您可以从子查询而不是表中进行选择。我将尝试找出如何获得所有玩家的分数,我想如果需要的话,可以单独问一个问题。对所有用户执行此操作的唯一方法是使用排名,这是MySQL没有的。您可以使用变量提供psuedo排名。