-5

AST の合計が最も多い上位 5 人のプレイヤーを見つける必要があります。

望ましい結果:

PlayerID   Sum(AST)  
3           10  
1           6  
2           5  

私の2つのテーブル:

tblPlayers   
PlayerID  
1  
2  
3  
4  
5  


tblIndStats  
GameID PlayerID AST  
1       2        2  
2       2        4  
3       3        5  
4       3        5
4

4 に答える 4

2

SQL サーバーの場合

SELECT TOP 5
    PlayerID, SUM(AST) ASTSUM
FROM tblIndStats
GROUP BY PlayerID
ORDER BY ASTSUM DESC
于 2013-01-24T12:54:21.887 に答える
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 件、および参照用のすべての結果を示しています。

別の問題 - 5 位に複数のプレーヤー

しかし、ここでも別の質問があります。最後の (5 番目の) 記録が複数のプレイヤーで共有されている場合はどうなりますか? それらのうちの 3 つの AST 合計が同じであるとします。では、どちらを結果に含めますか? 私の例のフィドル データは、3 人のプレーヤーが全員SumAST = 3.

救助への絆で

このような場合with ties、SQL Server で使用して、最後に一致するすべてのレコードを自動的に含めることができるため、同様に尊重されるべきプレーヤーを忘れることはありません (フェア プレイ ベイビー)。;)

select top 5 with ties PlayerID, sum(AST) as SumAST
from tblIndStats
group by PlayerID
order by SumAST desc
于 2013-01-24T12:55:13.087 に答える
0

オラクル:

SELECT *
    FROM (
            SELECT PlayerId, SUM(AST)
              FROM tblIndStats S
          GROUP BY PlayerId
          ORDER BY SUM(AST) DESC
          )
    WHERE ROWNUM <= 5

SQLサーバー:

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
于 2013-01-24T12:54:19.173 に答える
-1

(コンストラクトのトップ タイプはデータベース固有の場合があります)

select playerID, sum(AST)
from tblIndStats
group by playerID
order by sum(AST) desc

tblPlayers の他の列は表示されないため、そのテーブルに何が必要かわかりません。

于 2013-01-24T12:53:31.393 に答える