Sqlite3:找到10个不同的人的平均分数
我有两张桌子。一个人有身份证和分数。另一个有列:id、name。第二个表中的id与第一个表中的id匹配。一个名字可能有几个ID。我想找到n个平均分数最高的(不同的)名字 我可以找到10个不同的名字,我可以找到平均分数。但是,我不知道如何将这两种方法结合起来 选择id、id2、avg(分数)作为t1、t2中的avg_分数,其中t1.id=t2.id2按电影名称顺序分组。分数描述限制10 但我很确定这是错的Sqlite3:找到10个不同的人的平均分数,sqlite,Sqlite,我有两张桌子。一个人有身份证和分数。另一个有列:id、name。第二个表中的id与第一个表中的id匹配。一个名字可能有几个ID。我想找到n个平均分数最高的(不同的)名字 我可以找到10个不同的名字,我可以找到平均分数。但是,我不知道如何将这两种方法结合起来 选择id、id2、avg(分数)作为t1、t2中的avg_分数,其中t1.id=t2.id2按电影名称顺序分组。分数描述限制10 但我很确定这是错的 SELECT foo.name AS name, AVG(bar.score) AS avg
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
aggregate函数,用于实际平均任何值。另外,您希望按名称分组(这确保每个名称只得到一行,并使AVG
平均每个名称的分数),而在这里有是没有用的。所以我想我已经成功了。名称的输出按字母顺序排列,正如我所希望的那样。这只是运气吗?或者我可以做些什么来保证我得到n个最高的平均分数,如果有任何平局,那么它会按字母顺序排列?@lars你可以按分数顺序描述,命名ASC
来明确平局行为。