Bonjour
je rencontre une difficulté dans Access pour récupérer dans une requête ou une table, la somme des X plus grande valeur pour chacun de mes joueurs.

Pour le contexte, chaque semaine le mardi des vacances scolaire je joue au bowling avec une vingtaine de personnes.
Chaque semaine il y a un classement individuel.
j'ai réussi a attribuer une valeur de point en fonction du classement (de 10 a 1 pour les 10 premier jours et 1 point pour les autres joueurs).
ces résultats sont ajouté a une table qui regroupe tous les matchs.

j'arrive à additionner la totalité des points de chaque joueurs mais le problème s'est que nous gardons seulement 2/3 des résultat et donc les meilleurs.
En fin d'année, nous seront cette année à 6 journée et nous ne garderons que les 4 meilleures journées.
Comment ne prendre que les 6 meilleurs résultats.
Sachant que l'an prochain nous seront a 8 journées.


j'ai essayé avec Select Top 4 mais cela ne fonctionne pas.
j'arrive a lister les joueur dans l'ordre avec leur point gagnés mais je n'arrive pas a bloquer seulement au max les 4 meilleures
Nom : Capture d’écran 2025-04-11 161533.jpg
Affichages : 163
Taille : 45,1 Ko Nom : Capture d’écran 2025-04-11 161551.jpg
Affichages : 153
Taille : 42,4 Ko
certain n'ont pas joué les toute les journées et ne seront pas classés et peuvent ne pas être affichés mais si il le sont ce n'est pas plus mal.
il faut conserver les doublon dans le 4 meilleures journée
j'ai essayé avec chat-gpt mais j'ai toujours un problème avec la 5 et surement les 6 7 et 8 quand elle seront présentent et si elle sont identiques
mais si la 4-5-6-7-8 sont identiques, il faut garde que la 4eme dans ce cas précis ( dans une règle générale, le 2/3 des journées jouées
j'ai aussi demandé la somme des point de chaque journée conservées.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT 
    R.nomjoueur,
    SUM(R.points) AS total_points,
    SUM(R.nblignes) AS SommeDenblignes
FROM resultats_vacances AS R
WHERE R.NUM IN (
    SELECT R2.NUM
    FROM resultats_vacances AS R2
    WHERE R2.nomjoueur = R.nomjoueur
    AND R2.points IN (
        SELECT TOP 4 R4.points
        FROM resultats_vacances AS R4
        WHERE R4.nomjoueur = R2.nomjoueur
        ORDER BY R4.points DESC
    )
)
GROUP BY R.nomjoueur
ORDER BY SUM(R.points) DESC;