Créer un classement par année

Résolu/Fermé
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018 - 6 juin 2017 à 22:36
yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 - 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
A voir également:

7 réponses

yg_be Messages postés 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
10 juin 2017 à 11:58
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 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
11 juin 2017 à 01:09
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 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
7 juin 2017 à 00:40
bonsoir, peux-tu montrer le code SQL de ta requête?
0
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
10 juin 2017 à 09:07
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 mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
11 juin 2017 à 00:46
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 mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
11 juin 2017 à 11:43
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 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
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;
0
Scuba1404 Messages postés 28 Date d'inscription mardi 6 juin 2017 Statut Membre Dernière intervention 10 septembre 2018
11 juin 2017 à 15:12
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 22698 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
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
0