Créer un classement par année

Résolu
Scuba1404 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai une requête qui contient comme champs :
- année
- moyenne note 1
- moyenne note 2
- moyenne note 3
...
- total des moyennes des notes

J'aimerai faire un classement de la meilleure note à la moins bonne, en y incluant le paramètre de l'année. En d'autre terme, d'avoir un classement par année.

J'ai déjà cette formule : Rang: CpteDom("*";"[Produits vendus Requête1-x]";"[TOTAL] > " & [TOTAL])+1

mais le classement ne se fait pas par année, tout y est mélangé.

Est-ce que quelqu'un peut m'aide ?
MERCI

7 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, je pense qu'il suffit d'ajouter une instruction de classement, par exemple:
GROUP BY [Produits vendus].Année, [Produits vendus].[No du Stand]
ORDER BY [Produits vendus].Année, [Produits vendus].[No du Stand];

Le GROUP BY détermine sur quelle base se font les totaux et moyennes, tandis que le ORDER BY détermine le classement. Ils sont indépendants l'un de l'autre: j'ai choisi d'utiliser les mêmes dans l'exemple, supposant que c'était ce que tu attendais. Dans le ORDER BY, il est possible de spécifier, pour chacun des champs, si le tri est croissant ou décroissant.
autre exemple:
ORDER BY  [Produits vendus].[No du Stand], [Produits vendus].Année DESC;
1
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
ORDER BY [Produits vendus].Année, DCount([Année]=2016,"[Produits vendus Requête1-x]","[TOTAL] > " & [TOTAL])+1 desc;
1
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonsoir, peux-tu montrer le code SQL de ta requête?
0
Scuba1404 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Voici le code SQL de ma requête (j'avoue pas très lisible pour moi ;-)):

SELECT [Produits vendus].Année, [Produits vendus].[No du Stand], Avg([Q1 - Saison].[Points (Q1)]) AS [MoyenneDePoints (Q1)], Avg([Q2 - Origine].[Points (Q2)]) AS [MoyenneDePoints (Q2)], Avg([Q3 - Label].[Points (Q3)]) AS [MoyenneDePoints (Q3)], Avg([Q4 - Frais].[Points (Q4)]) AS [MoyenneDePoints (Q4)], Avg([Q5 - Bonus/Malus].[Points (Q5)]) AS [MoyenneDePoints (Q5)], Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)]) AS TOTAL, Count([Produits vendus].[Nom du produit]) AS [CompteDeNom du produit], DCount([Année]=2016,"[Produits vendus Requête1-x]","[TOTAL] > " & [TOTAL])+1 AS Rang
FROM ([Q1 - Saison] INNER JOIN Produits ON [Q1 - Saison].[Réponse (Q1)] = Produits.[Saison]) INNER JOIN ([Q5 - Bonus/Malus] INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] INNER JOIN ([Q2 - Origine] INNER JOIN [Produits vendus] ON [Q2 - Origine].[Réponse (Q2)] = [Produits vendus].[Origine du produit]) ON [Q3 - Label].[Réponse (Q3)] = [Produits vendus].[Label du produit]) ON [Q4 - Frais].[Réponse (Q4)] = [Produits vendus].[Conditionnement du produit]) ON [Q5 - Bonus/Malus].[No du Stand] = [Produits vendus].[No du Stand]) ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]
GROUP BY [Produits vendus].Année, [Produits vendus].[No du Stand];

Merci pour votre aide !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Scuba1404 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ton aide. Mais j'ai encore un couac quelque part, car le classement se fait sur le No du Stand et non pas sur le résultat du rang ( voici une partie du fichier) :



Tu peux voir que les 3 dernières lignes sont en lien avec 2017, mais le calcul du rang n'est pas fait sur ces trois résultats, mais avec ceux de 2016. Est-ce là le problème ?

Est-ce que tu aurais une solution ?
0
Scuba1404 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
J'y ai intégré le nouvel ORDER BY ... mais lorsque je veux voir le résultat, j'ai le message suivant :




Je remets le SQL actuel a toutes fins utiles :

SELECT [Produits vendus].Année, [Produits vendus].[No du Stand], Avg([Q1 - Saison].[Points (Q1)]) AS [MoyenneDePoints (Q1)], Avg([Q2 - Origine].[Points (Q2)]) AS [MoyenneDePoints (Q2)], Avg([Q3 - Label].[Points (Q3)]) AS [MoyenneDePoints (Q3)], Avg([Q4 - Frais].[Points (Q4)]) AS [MoyenneDePoints (Q4)], Avg([Q5 - Bonus/Malus].[Points (Q5)]) AS [MoyenneDePoints (Q5)], Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)]) AS TOTAL, Count([Produits vendus].[Nom du produit]) AS [CompteDeNom du produit], DCount([Année]=2016,"[Produits vendus Requête1-x]","[TOTAL] > " & [TOTAL])+1 AS Rang
FROM ([Q1 - Saison] INNER JOIN Produits ON [Q1 - Saison].[Réponse (Q1)] = Produits.[Saison]) INNER JOIN ([Q5 - Bonus/Malus] INNER JOIN ([Q4 - Frais] INNER JOIN ([Q3 - Label] INNER JOIN ([Q2 - Origine] INNER JOIN [Produits vendus] ON [Q2 - Origine].[Réponse (Q2)] = [Produits vendus].[Origine du produit]) ON [Q3 - Label].[Réponse (Q3)] = [Produits vendus].[Label du produit]) ON [Q4 - Frais].[Réponse (Q4)] = [Produits vendus].[Conditionnement du produit]) ON [Q5 - Bonus/Malus].[No du Stand] = [Produits vendus].[No du Stand]) ON Produits.[Nom du produit] = [Produits vendus].[Nom du produit]
GROUP BY [Produits vendus].Année, [Produits vendus].[No du Stand]
ORDER BY [Produits vendus].Année, DCount([Année]=2016,"[Produits vendus Requête1-x]","[TOTAL] > " & [TOTAL])+1 desc;


Mon résultat espéré est d'avoir pour chaque année, un calcul de rang basé sur le plus grand nombre de points ... Est-ce un problème de calcul de rang, qui génère ce problème ?


Un grand merci pour ton aide
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
et ainsi?
ORDER BY [Produits vendus].Année, Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)])  desc;
0
Scuba1404 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
C'est tout bon avec ce point. Merci beaucoup !

Encore une question au passage, dans ma colonne qui s'appelle "Rang", l'indication ne tient pas compte de l'année. Ce qui a pour incidence, que le 1er rang est attribué à un stand de 2017 et le 2ème rang a un de 2016.

Alors que ce que je voulais aussi avoir un indicateur par année ?

Peux-tu m'aider ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
SI tu veux avoir le rang pour l'année, je suggère:
DCount(
"*",
"[Produits vendus Requête1-x]",
"[TOTAL] > " & [TOTAL] & " AND [Année] = " & [Année])
+1
0