簡體   English   中英

SQL Server平均值/總和/組/計數查詢問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM