2015-10-05 58 views
-1

我想計算冰球比賽中所有球隊的平均生產力。爲了做到這一點,我想查詢一下計算每個球員的生產力,並取其平均值爲1俱樂部的生產力。爲了計算一個玩家的生產力,我將玩過的遊戲的目標數量分開。一名球員的進球數。甲骨文,個人球員的平均球隊統計數據會拋出異常

我試過用下面的查詢:

SELECT TEAM.CODE, (1 - AVG(SUM(TS.GOALS))/SUM(CS.GAMES) * 100) AS "Percentage" 
FROM DIM_TEAM TEAM 
JOIN PLAYER P ON P.TEAM_ID = TEAM.ID 
JOIN TEAM_STATS TS ON TS.PLAYER_ID = P.ID 
JOIN COMPETITION_STATS CS ON P.ID = CS.PLAYER_ID 
GROUP BY TEAM.CODE; 

我完全卡住,因爲我得到以下異常:

Error: ORA-00937: not a single-group group function

SQLState: 42000 ErrorCode: 937

的代碼工作在過去,但我認爲企業執行也是錯誤的。任何人都可以幫我弄清楚這一點嗎?

+6

準備http://sqlfiddle.com與結構和樣本數據,所以我們可以在 – lad2025

+0

移動爲了解決這個問題,需要更多的數據數據的結構。 –

+0

您正在您的示例中嵌套聚合。 '''avg(sum(ts.goal))'''首先計算你的總和,然後應用avg()。 – knuckles

回答

1

我刪除了總和(ts.goals),因爲這是您的錯誤的原因,我不認爲這是必要的。您需要在此查詢,雖然零提防鴻溝..

SELECT TEAM.CODE, (1 - AVG(TS.GOALS)/SUM(CS.GAMES) * 100) AS "Percentage" 
    FROM DIM_TEAM TEAM 
    JOIN PLAYER P ON P.TEAM_ID = TEAM.ID 
    JOIN TEAM_STATS TS ON TS.PLAYER_ID = P.ID 
    JOIN COMPETITION_STATS CS ON P.ID = CS.PLAYER_ID 
    GROUP BY TEAM.CODE; 
+0

確實,做得很好 – Jonas