我有两张桌子。一个人有一个id和一个分数。另一个有列:id,name。第二个表中的id与第一个表中的id匹配。一个名字可能有几个ID。我想找到平均得分最高的n个(不同)名字。
我可以找到10个不同的名字,我可以找到平均分数。但是,我没有看到如何结合2。
从t1,t2选择id,id2,avg(得分)为avg_score,其中t1.id = t2.id2按名称顺序分组,由movies.score desc limit 10;
但我很确定这是错的。
答案 0 :(得分:0)
SELECT foo.name AS name, AVG(bar.score) AS avgscore
FROM foo
JOIN bar ON foo.id=bar.id
GROUP BY name
ORDER BY avgscore DESC
LIMIT 10
您遗漏的主要内容是实际平均任何事情的AVG
聚合函数。此外,您希望按名称分组(这样可确保每个名称只能获得一行,并使AVG
平均每个名称的分数),此处HAVING
没有用。