Signaler

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

Posez votre question Scuba1404 5Messages postés mardi 6 juin 2017Date d'inscription 11 juin 2017 Dernière intervention - Dernière réponse le 11 juin 2017 à 15:28 par yg_be
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 
Utile
+1
plus moins
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 ?
Cette réponse vous a-t-elle aidé ?  
Donnez votre avis
Utile
+1
plus moins
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é ?  
Donnez votre avis
Utile
+0
plus moins
bonsoir, peux-tu montrer le code SQL de ta requête?
Donnez votre avis
Utile
+0
plus moins
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 !
Donnez votre avis
Utile
+0
plus moins
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;
Donnez votre avis
Utile
+0
plus moins
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 3008Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 8 août 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;
Répondre
Donnez votre avis
Utile
+0
plus moins
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 3008Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 8 août 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
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !