Access /requete selectionner top des ventes
Résolu
coric06
-
Das -
Das -
Bonjour,
je cherche à faire une requete sur acces qui selectionne les 20 top des ventes de chaque famille d'articles d'un catalogue.
J'arrive à sélectionner les 20 produits les plus vendus mais pas les 20 produits les + vendus de chaque famille !!
J'ai essayé avec la fonction Top n mais je n'y arrive pas.
Sinon j'ai pensé sélectionner les 20 top produits pour une famille et faire une itération mais je n'y arrive pas non plus.
Voici le volet sql:
SELECT TOP 20 zzzzzzzzzzz250108_2.Qtes AS [Quantités vendues],
zzzzzzzzzzz250108_2.AR_Ref,
F_FAMILLE.FA_CodeFamille
FROM dbo.zzzzzzzzzzz250108_2 INNER JOIN
dbo.F_ARTICLE ON
dbo.zzzzzzzzzzz250108_2.AR_Ref = dbo.F_ARTICLE.AR_Ref,
dbo.F_FAMILLE
GROUP BY dbo.zzzzzzzzzzz250108_2.AR_Ref,
dbo.F_ARTICLE.FA_CodeFamille,
dbo.zzzzzzzzzzz250108_2.Qtes,
dbo.F_FAMILLE.FA_CodeFamille
HAVING (dbo.F_ARTICLE.FA_CodeFamille = 'CARTESGRP')
Merci de votre aide !!!
je cherche à faire une requete sur acces qui selectionne les 20 top des ventes de chaque famille d'articles d'un catalogue.
J'arrive à sélectionner les 20 produits les plus vendus mais pas les 20 produits les + vendus de chaque famille !!
J'ai essayé avec la fonction Top n mais je n'y arrive pas.
Sinon j'ai pensé sélectionner les 20 top produits pour une famille et faire une itération mais je n'y arrive pas non plus.
Voici le volet sql:
SELECT TOP 20 zzzzzzzzzzz250108_2.Qtes AS [Quantités vendues],
zzzzzzzzzzz250108_2.AR_Ref,
F_FAMILLE.FA_CodeFamille
FROM dbo.zzzzzzzzzzz250108_2 INNER JOIN
dbo.F_ARTICLE ON
dbo.zzzzzzzzzzz250108_2.AR_Ref = dbo.F_ARTICLE.AR_Ref,
dbo.F_FAMILLE
GROUP BY dbo.zzzzzzzzzzz250108_2.AR_Ref,
dbo.F_ARTICLE.FA_CodeFamille,
dbo.zzzzzzzzzzz250108_2.Qtes,
dbo.F_FAMILLE.FA_CodeFamille
HAVING (dbo.F_ARTICLE.FA_CodeFamille = 'CARTESGRP')
Merci de votre aide !!!
A voir également:
- Access /requete selectionner top des ventes
- Set-top box - Accueil - Box & Connexion Internet
- Top site telechargement - Accueil - Outils
- Sites de ventes d'occasion - Guide
- Selectionner texte sur pdf - Guide
- Comment sélectionner un message sur whatsapp pour y répondre - Guide
9 réponses
Je pense que le mieux sera de passer par une table intermédiaire "par requete création" regroupant les articles avec indication de la famille et la qté totale et ensuite
- soit de récupérer le resultat sur excel et par tri "famille" puis "qté" créeer par macro le numéro de rang pour chacun et supprimer les rangs de 21 et +.....
- soit par macro access créer une nouvelle table en ajoutant par boucle le 20 premiers artciles classés par famille et qté...
Cela dépend aussi du nombre de ligne et de la structure de la table originale....
- soit de récupérer le resultat sur excel et par tri "famille" puis "qté" créeer par macro le numéro de rang pour chacun et supprimer les rangs de 21 et +.....
- soit par macro access créer une nouvelle table en ajoutant par boucle le 20 premiers artciles classés par famille et qté...
Cela dépend aussi du nombre de ligne et de la structure de la table originale....
"j'ai pensé sélectionner les 20 top produits pour une famille et faire une itération"
bonne approche, mais au lieu d'iterer je propose une requête UNION
select blabla from bloblo
union
select blibli from blublu
union
...
order by blblblb
bonne approche, mais au lieu d'iterer je propose une requête UNION
select blabla from bloblo
union
select blibli from blublu
union
...
order by blblblb
Phil, merci pour ta réponse...
Le problème est que la liste des familles est très longue et elle évolue sans arret c'zest pourquoi on ne peut pas les mettre dans la requete.
Il faudrait que la requete parcoure la table famille complète et selectionne poutr chaque famille de la table les top 20.
Le problème est que la liste des familles est très longue et elle évolue sans arret c'zest pourquoi on ne peut pas les mettre dans la requete.
Il faudrait que la requete parcoure la table famille complète et selectionne poutr chaque famille de la table les top 20.
Je pense que le mieux sera de passer par une table intermédiaire "par requete création" regroupant les articles avec indication de la famille et la qté totale et ensuite
- soit de récupérer le resultat sur excel et par tri "famille" puis "qté" créeer par macro le numéro de rang pour chacun et supprimer les rangs de 21 et +.....
- soit par macro access créer une nouvelle table en ajoutant par boucle le 20 premiers artciles classés par famille et qté...
Cela dépend aussi du nombre de ligne et de la structure de la table originale.......
- soit de récupérer le resultat sur excel et par tri "famille" puis "qté" créeer par macro le numéro de rang pour chacun et supprimer les rangs de 21 et +.....
- soit par macro access créer une nouvelle table en ajoutant par boucle le 20 premiers artciles classés par famille et qté...
Cela dépend aussi du nombre de ligne et de la structure de la table originale.......
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
SELECT * FROM
(
SELECT TOP 20
Qtes AS [Quantités vendues],
AR_Ref,
FA_CodeFamille
FROM
zzzzzzzzzzz250108_2
INNER JOIN F_ARTICLE ON zzzzzzzzzzz250108_2.AR_Ref = F_ARTICLE.AR_Ref
GROUP BY
zzzzzzzzzzz250108_2.AR_Ref,
FA_CodeFamille,
Qtes
)
Sales
INNER JOIN F_ARTICLE ON Sales.AR_Ref = dbo.F_ARTICLE.AR_Ref,
INNER JOIN F_FAMILLE ON F_FAMILLE.FA_CodeFamille = Sales.FA_CodeFamille
(
SELECT TOP 20
Qtes AS [Quantités vendues],
AR_Ref,
FA_CodeFamille
FROM
zzzzzzzzzzz250108_2
INNER JOIN F_ARTICLE ON zzzzzzzzzzz250108_2.AR_Ref = F_ARTICLE.AR_Ref
GROUP BY
zzzzzzzzzzz250108_2.AR_Ref,
FA_CodeFamille,
Qtes
)
Sales
INNER JOIN F_ARTICLE ON Sales.AR_Ref = dbo.F_ARTICLE.AR_Ref,
INNER JOIN F_FAMILLE ON F_FAMILLE.FA_CodeFamille = Sales.FA_CodeFamille
Bonjour à tous,
Je me permet de relancer ce post. La syntaxe ci dessus me semble particulièrement intéressante mais je n'arrive pas à la faire fonctionner. L'objectif est de sortir un TOP 5 par regroupement. Exemple TOP 5 des ventes par vendeur ou les 10 dernières ventes par article ect...
Exemple d'une table avec NomVendeur ; ArticleVendu ; ChiffreDAffaire
Comment sélectionner le top 3 des produits les plus vendus par vendeur (sans faire des unions de table avec des noms de vendeurs figés).
Merci d'avance, j'ai beau chercher je ne trouve pas de piste plus claire que ci dessus.
Adrien
Je me permet de relancer ce post. La syntaxe ci dessus me semble particulièrement intéressante mais je n'arrive pas à la faire fonctionner. L'objectif est de sortir un TOP 5 par regroupement. Exemple TOP 5 des ventes par vendeur ou les 10 dernières ventes par article ect...
Exemple d'une table avec NomVendeur ; ArticleVendu ; ChiffreDAffaire
Comment sélectionner le top 3 des produits les plus vendus par vendeur (sans faire des unions de table avec des noms de vendeurs figés).
Merci d'avance, j'ai beau chercher je ne trouve pas de piste plus claire que ci dessus.
Adrien
Pour être plus précis et d'après la réponse ci-dessus, il faudrait faire 2 tables avec distinctes avec la requête ci dessous. Malheureusement cela ne pas et j'obtiens le TOP 3 des articles les plus vendus quelque soit le vendeur...
TableVente : MatriculeVendeur ; ArticleVendu ; ChiffreDAffaire
TableVendeur : MatriculeVendeur ; NomVendeur
puis la requête ci dessous :
SELECT * FROM
(
SELECT TOP 3
MatriculeVendeur, ArticleVendu, ChiffreDAffaire
FROM
TableVente
GROUP BY
MatriculeVendeur, ArticleVendu, ChiffreDAffaire
ORDER BY ChiffreDAffaire DESC
)
sales
INNER JOIN TableVendeur ON sales.MatriculeVendeur = TableVendeur.NomVendeur
;
TableVente : MatriculeVendeur ; ArticleVendu ; ChiffreDAffaire
TableVendeur : MatriculeVendeur ; NomVendeur
puis la requête ci dessous :
SELECT * FROM
(
SELECT TOP 3
MatriculeVendeur, ArticleVendu, ChiffreDAffaire
FROM
TableVente
GROUP BY
MatriculeVendeur, ArticleVendu, ChiffreDAffaire
ORDER BY ChiffreDAffaire DESC
)
sales
INNER JOIN TableVendeur ON sales.MatriculeVendeur = TableVendeur.NomVendeur
;