我有一个表,用于存储运动结果的一系列事件: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