我想做一个sql查询,但我做不到。。。我找不到像我这样的例子。
我有一个简单的表,有3列7条记录:
我想为每一队得到2个最好的人的平均分。
我的问题:
SELECT team
, (SELECT AVG(point)
FROM People t2
WHERE t1.team = t2.team
ORDER
BY point DESC
LIMIT 2) as avg
FROM People t1
GROUP
BY team
当前结果:(每个团队所有人的平均值)
显然,不可能在子查询中使用限制。”忽略“按点顺序描述限制2”。
预期结果:
我想要每个队2个最好的人的平均分(最高分),而不是每个队所有人的平均分。
我该怎么做?如果有人知道。。
我在mysql数据库上
小提琴的环节:http://sqlfiddle.com/#!9/8c80ef/1型
谢谢!
2条答案
按热度按时间hmtdttj41#
你可以试试这个。
尝试通过子查询生成订单号,这
order by point
描述。如果你想得到其他人,那么每个队只能得到前2排
top
数字只需修改中的数字where
条款。查询1:
结果:
bgibtngc2#
这是mysql的一大难题。如果需要两个最高点的值,可以执行以下操作:
领带让这件事变得棘手,你的问题是不清楚该怎么办。