MySQL的:每个用户的最后10个条目?
题
我有一个表存储的交易数据向用户展示。为了找到一个用户等级,你拿过去的10个条目该用户的平均分数。是否有一种方式来获得与SQL?
我需要能够解决它对于给定的ID的单个用户。并获得通过他们的得分下令所有用户的列表。
目前我正在出来的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
解决方案
使用:
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
其他提示
就已经将二者结合起来的查询使用:
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
是任何识别I.D.是
不隶属于 StackOverflow