3

次の表があります。

╔══════════╦════════╦═══════╦═══════╗
║ PlayerID ║ GameID ║ Stat1 ║ Stat2 ║
╠══════════╬════════╬═══════╬═══════╣
║ 1 ║ A ║ 2 ║ 1 ║
║ 1 ║ B ║ 4 ║ 2 ║
║ 1 ║ C ║ 6 ║ 5 ║
║ 2 ║ A ║ 2 ║ 4 ║
║ 2 ║ B ║ 2 ║ 6 ║
║ 2 ║ C ║ 2 ║ 8 ║
║ 2 ║ D ║ 4 ║ 2 ║
║ 2 ║ E ║ 6 ║ 1 ║
║ 3 ║ A ║ 5 ║ 9 ║
║ 3 ║ G ║ 6 ║ 4 ║
║ 3 ║ H ║ 4 ║ 2 ║
║ 3 ║ N ║ 8 ║ 6 ║
╚══════════╩════════╩═══════╩═══════╝

私が達成しようとしていることは次のとおりです。

╔══════════╦═══════════╦═══════════════════╦══════ ═════════════╗
║ PlayerID ║ GameCount ║ 統計 1 平均 / ゲーム ║ 統計 2 平均 / ゲーム ║
╠══════════╬═══════════╬═══════════════════╬══════ ═════════════╣
║ 1 ║ 3 ║ 4 ║ 2.66 ║
║ 2 ║ 5 ║ 3.2 ║ 4.2 ║
║ 3 ║ 4 ║ 5.75 ║ 5.25 ║
╚══════════╩═══════════╩═══════════════════╩══════ ═════════════╝

ゲーム数はプレーヤーごとにプレイされたゲームの合計数である必要があり、統計はゲームごとの平均である必要があります。基本的に、PlayerID 1 の計算は次のとおりです。

「統計 1 平均 / ゲーム」 = (2 + 4 + 6) / 3 「統計 2 平均 / ゲーム」 = (1 + 2 + 5) / 3

SUMS と COUNTS を組み合わせて同じクエリのさまざまなバリエーションを試しましたが、GameCount は正しくありません。私が試したことの例は以下のとおりです

SELECT PlayerID, 
COUNT(GameID) AS GameCount, 
SUM(Stat1) / COUNT(GameID)  "Stat 1 Avg / Game",
SUM(Stat2) / COUNT(GameID)  "Stat 2 Avg / Game"
FROM PublishedStats A
GROUP BY PlayerID

SELECT PlayerID, 
COUNT(GameID) OVER (PARTITION BY PlayerID) AS GameCount, 
SUM(Stat1) /  COUNT(GameID) OVER (PARTITION BY PlayerID) "Stat 1 Avg / Game", 
SUM(Stat2) /  COUNT(GameID) OVER (PARTITION BY PlayerID) "Stat 2 Avg / Game", 
FROM Stats
GROUP BY PlayerID, GameID
4

1 に答える 1

0

したがって、DISTINCT キーワードを追加するだけです。

SELECT PlayerID, 
COUNT(DISTINCT GameID) AS GameCount, 
AVG(Stat1)  "Stat 1 Avg / Game",
AVG(Stat2)  "Stat 2 Avg / Game"
FROM PublishedStats A
GROUP BY PlayerID
于 2013-05-16T01:00:36.573 に答える