【发布时间】:2013-08-19 20:37:16
【问题描述】:
我有一组用户执行他们得分的任务。我正在尝试创建一个报告,显示每个用户最近 50 个任务的平均值。
用户表:用户 ID、用户名、用户类型
任务表:taskid, score, tasktype, userid
如果我这样做:
SELECT u.userid, u.username, (SELECT AVG(score)
FROM task t
WHERE t.userid = u.userid AND t.tasktype = 'task1'
ORDER BY t.taskid DESC LIMIT 50) AS avgscore
FROM user u
WHERE u.usertype = 'utype';
这是行不通的,因为它在计算所有内容的平均值后会限制 50。
我需要的是这个:
SELECT u.userid, u.username, AVG(SELECT t.score
FROM task t
WHERE t.userid = u.userid AND t.tasktype = 'task1'
ORDER BY t.taskid DESC LIMIT 50) AS avgscore
FROM user u
WHERE u.usertype = 'utype';
但这不是有效的语法
我尝试过子子查询,但也不能这样,因为当我在子子查询中引用 u.userid 时,总是遇到限制、连接或未知字段的问题.
有没有办法做到这一点?
【问题讨论】:
-
感谢您的编辑 - 我以为我是这样的,但是当我发布时它并没有这样显示 - 你打败了我自己修复它。