Créer un classement par année [Résolu]

Scuba1404 14 Messages postés mardi 6 juin 2017Date d'inscription 21 octobre 2017 Dernière intervention - 6 juin 2017 à 22:36 - Dernière réponse : yg_be 4187 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention
- 11 juin 2017 à 15:28
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
Afficher la suite 

9 réponses

Répondre au sujet
yg_be 4187 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 10 juin 2017 à 11:58
+1
Utile
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;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de yg_be
yg_be 4187 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 11 juin 2017 à 01:09
+1
Utile
ORDER BY [Produits vendus].Année, DCount([Année]=2016,"[Produits vendus Requête1-x]","[TOTAL] > " & [TOTAL])+1 desc;
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de yg_be
yg_be 4187 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 7 juin 2017 à 00:40
0
Utile
bonsoir, peux-tu montrer le code SQL de ta requête?
Commenter la réponse de yg_be
Scuba1404 14 Messages postés mardi 6 juin 2017Date d'inscription 21 octobre 2017 Dernière intervention - 10 juin 2017 à 09:07
0
Utile
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 !
Commenter la réponse de Scuba1404
Scuba1404 14 Messages postés mardi 6 juin 2017Date d'inscription 21 octobre 2017 Dernière intervention - 11 juin 2017 à 00:46
0
Utile
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 ?
Commenter la réponse de Scuba1404
Scuba1404 14 Messages postés mardi 6 juin 2017Date d'inscription 21 octobre 2017 Dernière intervention - 11 juin 2017 à 11:43
0
Utile
1
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
yg_be 4187 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 11 juin 2017 à 12:12
et ainsi?
ORDER BY [Produits vendus].Année, Avg([Points (Q1)]+[Points (Q2)]+[Points (Q3)]+[Points (Q4)]+[Points (Q5)])  desc;
Commenter la réponse de Scuba1404
Scuba1404 14 Messages postés mardi 6 juin 2017Date d'inscription 21 octobre 2017 Dernière intervention - 11 juin 2017 à 15:12
0
Utile
1
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 ?
yg_be 4187 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 17 décembre 2017 Dernière intervention - 11 juin 2017 à 15:28
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
Commenter la réponse de Scuba1404