这可以用子查询来完成吗?

Can this be done with a subquery?

我有一个 table 看起来像这样:

Team    Name     Points
A       Peter    26 
A       John     18
A       Carl     20
A       Robert   32
A       Mike     10
B       Tom      22
B       Michael  28
B       Tina     18
B       Donald   35
B       Jeff     20

我想从查询中得到一个结果,该结果将给出团队中最好的 3 位用户以及 3 位最高用户的分数总和。

A队得分最高的3人是罗伯特(32分)、彼得(26分)和(卡尔(20分),共计78分。 B 队得分最高的 3 人是 Donald (35)、Michael (28) 和 Tom (22),总共 85 分

所以一定是这样的:

Place   Team   Points   
1       B      85
2       A      78

我试过这样的方法:

SELECT points, user FROM table ORDER BY points DESC, LIMIT 3

这将给我得分最高的 3 个用户,但我还想要这 3 个用户的 SUM,并且这些记录必须是每个团队。

我认为必须用子查询来完成,对吗?

SELECT team,SUM(points) sp FROM
(
(
SELECT * FROM `table` WHERE team = "A" ORDER BY points  DESC LIMIT 3
)
UNION ALL
(
SELECT * FROM `table` WHERE team = "B" ORDER BY points DESC LIMIT 3 
)
)
AS dbx
GROUP BY team
ORDER BY sp DESC

解释:

您的数据:

获得两队(A 和 B)的最高 3 名。 然后,求和后将它们全部加入。

结果: