Трудно ми е да получа следната заявка:
Да кажем, че имам маса с много отбори и всеки отбор има 15 играчи (един към много към маса с играчи).
Тези играчи са подредени в рамките на отбор, чрез колона за ред, от 0 до 14 и имат два атрибута:
- Спечелени точки (цяло число)
- wasSick (булева стойност или цяло число със стойности 0 за false или 1 за true)
Бих искал заявка, която връща ред за всеки отбор, където първата колона е ID на отбора (първичен ключ), а втората колона е сумата от точките, отбелязани от първите 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 не се нулира между отборите.