我有一個表,用於存儲運動結果的一系列事件:ONS_Skippers
從這個表中的相關列的問題是: FK_EventID
,FK_SkipperID
和intResult
。SQL查詢,查詢子
我從這個數據庫中提出了不同的統計數據,但我沒有成功地爲最高級的數據生成查詢:我想列出每個參與者的平均表現(FK_SkipperID
)。我已經爲事件獲勝定義了性能爲100%,事件中最後一個位置的性能爲0%,並且在兩個範圍之間的線性曲線上表現爲性能。該公式爲:
Performance = 100*(1-(intResult-1)/(NumberOfParticipantsInTheEvent-1))
NumberOfParticipantsInTheEvent
來自每個事件的不同而不同,因此需要從各組的FK_EventID
計數。我所有的努力迄今未能:
例子:
SELECT FK_SkipperID, AVG((1-(intResult-1.0)/((SELECT Count(FK_EventID)
FROM ONS_Skippers AS ONS_Skippers2
WHERE ONS_Skippers.FK_EventID = ONS_Skippers2.FK_EventID AND FK_SkipperID > 0
GROUP BY FK_EventID)-1))*100)
FROM ONS_Skippers
GROUP BY FK_SkipperID
這給了錯誤信息「不能對包含聚合或子查詢的表達式執行聚合函數」。
關於如何生成想要的輸出的任何想法?
示例數據和期望的結果真的有幫助。事實上,你的問題還不太清楚,因爲你沒有提供「想要的輸出」,只是一個破碎的查詢。 –
我想你在'FROM ONS_Skippers'後需要一些閉括號' –
我想我提供了有關所需輸出的信息,@GordonLinoff :-)無論如何,解決方案只在我的帖子後幾分鐘給出,我很開心男人......我唯一的遺憾是我之前沒有在這裏發帖,而不是花幾個小時,試圖自己找出答案。但我應該知道一個自學成才的程序員的極限: - D。 – euphoria