Salut !
j'ai un probleme avec une de mes requetes SQL.
Je dois compter le nombre de clients par produits, et le taux d'equipement du produit. Par exemple si la moitié des clients utilisent le produit 'coucou', celui-ci aura un taux de 50%
la table CLIENTS contient toutes les informations des clients (identifiant, adresse,...)
la table BIBLIO contient la liste de tous les clients, et leur Chiffres d'affaires de l'année pour chaque produit (N01 correspond au CA de Janvier, N02 Février,...)
La table liste_pdt contient la liste de tous les produits et les gammes auxquels ils sont rattachés
là, pas de problemes :
(15.330 est le nombre total de clients.)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT Liste_Pdt.Pdt AS Produit, Sum(IIf(Biblio.[N01]<>0 Or Biblio.[N02]<>0,1,0)) AS [Clients Période], FormatPercent(CDbl(Sum(IIf(Biblio.[N01]<>0 Or Biblio.[N02]<>0,1,0))/15330),2) AS [Taux période], FROM Liste_Pdt, Biblio, Clients WHERE (((Biblio.Produit)=[Liste_Pdt].[Pdt]) AND ((Clients.idcli)=[Biblio].[idcli])) GROUP BY Liste_Pdt.Pdt;
seulement un produit peut appartenir à une gamme.
Exemple :
la gamme 'COLIS' contient les produits 'Colis Express' et 'Colis Standard'
dans la base, c'est construit comme ceci :
TABLE liste_pdt
Num | pdt | Marché
1 |Colis Express | COLIS
2 |Colis Standard | COLIS
3 |Fourchette | COUVERTS
4 |Colis Bleu | COLIS
donc dans ma requete je fais :
Seulement je m'apercois que le taux période dépasse les 100%...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT Liste_Pdt.Marche, Sum(IIf(Biblio.[N01]<>0 Or Biblio.[N02]<>0,1,0)) AS [Clients Période], FormatPercent(CDbl(Sum(IIf(Biblio.[N01]<>0 Or Biblio.[N02]<>0,1,0))/15330),2) AS [Taux période] FROM Liste_Pdt, Biblio, Clients WHERE (((Biblio.Produit)=[Liste_Pdt].[Pdt]) AND ((Clients.idcli)=[Biblio].[idcli])) GROUP BY Liste_Pdt.Marche ORDER BY Count(Biblio.idcli) DESC;
en ajoutant l'identifiant des clients, je vois que certains clients sont comptés plusieurs fois. dans l'exemple, si le client fais du 'Colis Express', du 'Colis Bleu' et du 'Colis Standard', il est compté 3 fois quand j'execute la requete
MARCHE | idCli | Clients Période
COLIS | 120 | 3
et lorsque que l'on fait le compte pour tous les clients, on trouve un nombre de clients supérieur au nombre total de clients...
il devrait afficher
MARCHE | idCli | Clients Période
COLIS | 120 | 1
Comment faire pour que ma requete ne compte qu'une fois un client? pourtant je lui dis bien de faire un regroupement sur le marché.
Partager