我需要找到总数最高的前5名球员。
期望的结果:
PlayerID Sum(AST)
3 10
1 6
2 5
我的两张桌子:
tblPlayers
PlayerID
1
2
3
4
5
tblIndStats
GameID PlayerID AST
1 2 2
2 2 4
3 3 5
4 3 5
答案 0 :(得分:2)
对于Sql Server
SELECT TOP 5
PlayerID, SUM(AST) ASTSUM
FROM tblIndStats
GROUP BY PlayerID
ORDER BY ASTSUM DESC
答案 1 :(得分:2)
这应该会在 Microsoft SQL Server :
中获得前5名select top 5 PlayerID, sum(AST) as SumAST
from tblIndStats
group by PlayerID
order by SumAST desc --, PlayerID
正在运行的示例:这是显示结果的SQL Fiddle。示例显示前5个,前5个扩展以及所有结果供参考。
但这里也有一个不同的问题。如果您的最后一个(第五个)记录在多个玩家之间共享怎么办?假设其中3个具有相同的AST总和。那么您将在结果中包含哪一个?我的示例小提琴数据显示了这样一个场景:有三个玩家都有SumAST = 3
。
对于这种情况,您可以在SQL Server中使用with ties
,它将自动包含与最后一个匹配的所有记录,因此您不会忘记任何应该被尊重的玩家(公平竞赛宝贝)。 ;)
select top 5 with ties PlayerID, sum(AST) as SumAST
from tblIndStats
group by PlayerID
order by SumAST desc
答案 2 :(得分:0)
甲骨文:
SELECT *
FROM (
SELECT PlayerId, SUM(AST)
FROM tblIndStats S
GROUP BY PlayerId
ORDER BY SUM(AST) DESC
)
WHERE ROWNUM <= 5
SQL Server:
SELECT TOP(5) *
FROM (
SELECT PlayerId, SUM(AST)
FROM tblIndStats S
GROUP BY PlayerId
ORDER BY SUM(AST) DESC
)
我的Sql:
SELECT *
FROM (
SELECT PlayerId, SUM(AST)
FROM tblIndStats S
GROUP BY PlayerId
ORDER BY SUM(AST) DESC
)
LIMIT 5
答案 3 :(得分:-1)
(最高类型的构造可能是特定于数据库的)
select playerID, sum(AST)
from tblIndStats
group by playerID
order by sum(AST) desc
您没有显示来自tblPlayers的任何其他列,因此不确定您希望从该表中获得什么。