IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

extraction meilleurs scores


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut extraction meilleurs scores
    Bonjour;

    Je bute sur un problème de requête: Je cherche à extraire d'une liste les 5 meilleurs scores de chaque concurrent.
    Je joints sous excel une copie de cette liste. le but est donc de garder les 5 meilleurs Points_acquis et les enregistrements correspondants.
    merci pour l'aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 26
    Points : 38
    Points
    38
    Par défaut
    Bonjour,

    Essaie quelque chose comme ça:

    1° créer une requête avec regroupement
    2° Trier en premier sur nom croissant
    2° Trier en deuxième sur Points_acquis décroissant
    3° Ajouter un champ TopScore qui s'incrémente à chaque enregistrement
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    TopScore: CpteDom("*";"[MaTable]";"[Points_acquis]>=" & [Points_acquis] & " AND [NOM] like '" & [Nom] & "'")
    4° Mettre comme critère dans ce champ "<6". Ainsi on aura que les 5 premiers enregistrements


    Code complet (il faut bien sûr remplacer MaTable par le nom de ta table):

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT MaTable.[Code Fiche], MaTable.NOM, MaTable.PRENOM, MaTable.[N° de l'épreuve], MaTable.COEFFICIENT, MaTable.Points_acquis, DCount("*","[MaTable]","[Points_acquis]>=" & [Points_acquis] & " AND [NOM] like '" & [Nom] & "'") AS TopScore
    FROM MaTable
    GROUP BY MaTable.[Code Fiche], MaTable.NOM, MaTable.PRENOM, MaTable.[N° de l'épreuve], MaTable.COEFFICIENT, MaTable.Points_acquis
    HAVING (((DCount("*","[MaTable]","[Points_acquis]>=" & [Points_acquis] & " AND [NOM] like '" & [Nom] & "'"))<6))
    ORDER BY MaTable.NOM, MaTable.Points_acquis DESC;

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    Sauf erreur, à la lecture de la requete, si un concurrent obtient le même score à 2 épreuves différentes, la requete ne va retourner qu'un TOP 4 pour ce concurrent.

    Une alternative qui retourne toujours un TOP 5 dans le cas où chaque concurrent n'effectue qu'une seule fois chaque épreuve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT T1.[Code Fiche], T1.Nom, T1.Prenom, T1.[N° de l'épreuve], T1.Coefficient, T1.Points_acquis
    FROM MaTable AS T1
    WHERE (((T1.[N° de l'épreuve]) In (SELECT TOP 5 T2.[N° de l'épreuve] From MaTable As T2 WHERE T2.[Code Fiche]=T1.[Code Fiche] ORDER BY T2.Points_Acquis desc, T2.[N° de l'épreuve])))
    ORDER BY T1.[Code Fiche], T1.Points_acquis DESC;
    Si chaque concurrent effectue une fois ou plus une épreuve, il suffit d'ajouter à la table une colonne "numéro auto" et porter la clause WHERE sur cette colonne. Exemple si on nomme cette colonne "Id" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT T1.[Code Fiche], T1.Nom, T1.Prenom, T1.[N° de l'épreuve], T1.Coefficient, T1.Points_acquis
    FROM MaTable AS T1
    WHERE T1.Id In (SELECT TOP 5 T2.Id From MaTable As T2 WHERE T2.[Code Fiche]=T1.[Code Fiche] ORDER BY T2.Points_Acquis desc, T2.Id)
    ORDER BY T1.[Code Fiche], T1.Points_acquis DESC;
    Philippe

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2002
    Messages : 26
    Points : 38
    Points
    38
    Par défaut
    Ouah,
    là y a plus qu'à s'incliner devant le roi de la sous-requête

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour CarSoftAja,

    merci, ta requête est bonne aussi dans un grand nombre de cas et peut être dans celui-ci

    Bonne continuation,

    Philippe

  6. #6
    Nouveau membre du Club
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Merci à vous deux pour votre contribution

    J'avais entre temps trouvé aussi une solution simlilaire.
    Cependant en cas de score égaux la fonction Top ne renvoie pas tout!
    mais bon je ferai avec
    merci encore
    MarcGR

Discussions similaires

  1. [aide requete] 10 meilleurs score du meilleur joueur
    Par venomelektro dans le forum Requêtes
    Réponses: 6
    Dernier message: 11/06/2012, 18h27
  2. Réponses: 6
    Dernier message: 15/06/2011, 14h43
  3. [AC-2007] Classement par Equipe sur le total des 3 meilleurs scores
    Par ctsblv dans le forum Access
    Réponses: 10
    Dernier message: 07/12/2010, 14h20
  4. Trouver les meilleurs scores de chaque joueur
    Par nycolas dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/08/2009, 07h09
  5. Algorithme permettant de garder les meilleurs score
    Par mhtrinh dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 13/12/2007, 17h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo