Créer un classement par année
Résolu
Scuba1404
Messages postés
28
Statut
Membre
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
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
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:
- Créer un classement par année
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
- Creer un fichier .bat - Guide
7 réponses
bonjour, je pense qu'il suffit d'ajouter une instruction de classement, par exemple:
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:
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;
ORDER BY [Produits vendus].Année, DCount([Année]=2016,"[Produits vendus Requête1-x]","[TOTAL] > " & [TOTAL])+1 desc;
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 !
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 !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 ?

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 ?
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

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
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 ?
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 ?