Bonjour à tous,
Je fais appel à vous car je souhaiterais faire un scoring des mes clients.
J'ai à disposition une table de fait : facturation.
Cette table est au niveau de détails de la facture. Donc pour tous mes clients j'ai toutes leurs factures.
Dans un 1er temps j'ai créé un 'WITH' :
Dans un 2nd temps, j'ai créé la requête qui me permet d'avoir le classement des mes clients :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 WITH scoring as ( SELECT code_produit as produit, code_ville as ville, code_activite as activite, raisonsociale as client, montant_ht, annee_emission_facture FROM facturation f )
Là où cela se complique : lorsque l'on me demande de n'afficher que les 2 premiers clients, je dois créer un client 'Total' qui serait la somme de mes 2 premiers clients :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT client, sum(montant_ht) as montant_ht, rank() OVER ( ORDER BY Sum(montant_ht) DESC) as rank2 FROM scoring group by client
Par exemple:
TOTAL_CLIENT 5000 CLIENT_1 3500 CLIENT_2 1500
J'ai bien tenté de faire ça :
Mais sur la colonne 'Z_Total', il me somme toutes les lignes de ma table, il ne prend pas en compte le rank.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Select * from ( SELECT client, sum(montant_ht) as montant_ht, rank() OVER ( ORDER BY Sum(montant_ht) DESC) as rank2 FROM scoring group by client UNION SELECT 'Z_Total' as client, sum(montant_ht) as montant_ht, 0 as rank2 FROM scoring)A WHERE a.rank2 <=2
Sachant que dans le meilleur des mondes, il faudrait que je n'ai qu'une seule fois la clause Where rank2 <=2Pouvez-vous m'orienter sur la solution ?
Je me tiens à votre disposition.
Cordialement.
Un néophyte![]()
Partager