У меня есть таблица, хранящий спортивные результаты для ряда событий: 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