[英]SQL Server Averages/Sums/Groups/Counts Query Issue
我有下表:
╔══════════╦════════╦═══════╦═══════╗ ║ 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 ║ Stat 1 Avg / Game ║ Stat 2 Avg / Game ║ ╠══════════╬═══════════╬═══════════════════╬═══════════════════╣ ║ 1 ║ 3 ║ 4 ║ 2.66 ║ ║ 2 ║ 5 ║ 3.2 ║ 4.2 ║ ║ 3 ║ 4 ║ 5.75 ║ 5.25 ║ ╚══════════╩═══════════╩═══════════════════╩═══════════════════╝
游戲數應該是每個玩家玩的游戲總數,統計數據應該是每場游戲的平均數。 基本上,PlayerID 1的計算如下:
“Stat1平均/游戲”=(2 + 4 + 6)/ 3“Stat2平均/游戲”=(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
所以只需添加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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.