Così su due piedi non saprei dirti. Dovrei scomporre la tua query per capire esattamente cosa faccia.
A livello teorico occorrerebbe creare una situazione del genere, in pratica ordinare la tua query di partenza per gruppo crescente, punteggio decrescente e riuscire a creare un campo posizione che si incrementi via via e che si resetti al cambio di gruppo.
codice:
id_gruppo punteggio posizione
1 20 1
1 19 2
1 18 3
1 18 4
2 10 1
2 10 2
2 10 3
2 10 4
3 5 1
3 4 2
3 3 3
3 2 4
In questo modo basterebbe fare, nel mio esempio, per sommare i tre punteggi maggiori di ciascun gruppo
codice:
select id_gruppo, Sum(punteggio) as totale
from tabella
where posizione < 4
group by id_gruppo
Purtroppo access non consente l'uso di variabili all'interno della query.
Temo che sia necessario ricorrere a qualche escamotage in vba ma sarei felice di essere smentito.