我有一个存储用户交易数据的表。要查找用户评分,请获取该用户最近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
答案 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
无论是识别身份证如何。是