Мне трудно получить следующий запрос:
Допустим, у меня есть стол с большим количеством команд, и в каждой команде по 15 игроков (один ко многим для таблицы игроков).
Эти игроки упорядочиваются внутри команды в столбце «Порядок» от 0 до 14 и имеют два атрибута:
- Набранные очки (целое число)
- wasSick (логическое значение или целое число со значениями 0 для false или 1 для true)
Мне нужен запрос, который возвращает строку для каждой команды, где первый столбец — это идентификатор команды (первичный ключ), а второй — сумма очков, набранных первыми 11 игроками из каждая команда, которая не заболела, используя порядок, указанный в столбце Порядок.
Если болело более 3-х игроков, команда использовала всех оставшихся.
Это противоречит базе данных Oracle. Я пытался использовать ROWNUM, но мне нужен аналогичный rownum, который сбрасывается для каждой агрегации. Запрос может содержать подзапросы или использовать предложение WITH.
Спасибо!
PD: Если вы догадались, это футбольные команды.
ИЗМЕНИТЬ
Атрибут, используемый для определения порядка игроков в команде, — это столбец порядка. Назовем его столбцом «Позиция», и он имеет целое число от 0 до 14. Итак, если в команде болеют игроки 2 и 4, мне нужна сумма очков, набранных игроками 0,1,3,5,6, 7,8,9,10,11 и 12.
Моя попытка была примерно такой:
SELECT t.id, sum(p.points) FROM team t, points p WHERE p.t_id = t.id AND p.wasSick = 0 AND ROWNUM < 12 GROUP BY p.t_id
Что здесь не так, так это то, что мне не хватает ORDER BY p.position и что ROWNUM не сбрасывается между командами.