Я пытаюсь создать новую базу данных в LibreOffice Base / HSQLDB, которая предположительно поддерживает стандартный SQL, но, вероятно, не так широко, как SQL-сервер или Oracle.
У меня есть таблица результатовгде участник является членом одного из списка клубов.Мне нужно создать «Командный зачет», в котором команды являются динамическими, а именно они состоят из 5 лучших результатов каждого клуба.
Ближайшие результаты, которые мне удалось достичь:
SELECT "Score", "ShootRecords"."ClubID" FROM "ShootRecords" WHERE "ShootRecords"."ClubID" = 0
UNION
SELECT "Score", "ShootRecords"."ClubID" FROM "ShootRecords" WHERE "ShootRecords"."ClubID" = 1
ORDER BY "Score" DESC
Если я добавлю квалификатор TOP 5
в начало каждого подзапроса, он сообщит как недопустимый SQL.Если я переместу предложение ORDER BY
в подзапрос, он снова сообщит о недопустимом SQL-запросе, но каждый подзапрос должен быть отсортирован таким образом и ограничен TOP 5
, иначе результаты будут неправильными.
Я также смотрел на выполнение подзапросов так:
SELECT "ClubID"
FROM "Clubs"
WHERE "Clubs"."ClubID" IN
(SELECT "ClubID"
FROM "Clubs", "ShootRecords"
WHERE "Clubs"."ClubID" = "ShootRecords"."ClubID"
)
, но опять-таки порядок и подстановка выполняются в неправильном порядке или не действительны.
То, что я надеюсь увидеть, будет выглядеть примерно так:
Score ClubID
------------------
300 0
299 0
280 0
200 0
190 0
310 1
290 1
277 1
и т. Д.