bonjour à tous!

je dispose de 20 produits et de 60 clients. J'aimerais écrire une requête qui me sort les 3 meilleurs clients par produits.

J'ai pu écrire une requête qui me donne le chiffre d'affaire par ordre décroissant par produit et par clients:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
select codprod, codcli, sum(montant) as ca
from factures group by codprod, codcli
order by codprod asc, codcli desc
ceci me donne le résultat suivant:
prod_1 ______ cli_6 ______ 3 000 000
prod_1 ______ cli_5 ______ 2 700 000
prod_1 ______ cli_3 ______ 2 550 000
prod_1 ______ cli_9 ______ 2 490 000
prod_1 ______ cli_2 ______ 2 370 000
prod_1 ______ cli_7 ______ 2 290 000
prod_1 ______ cli_1 ______ 2 270 000
prod_1 ______ cli_4 ______ 1 850 000
prod_1 ______ cli_8 ______ 1 650 000

prod_2 ______ --- ______ ---
prod_2 ______ --- ______ ---
prod_2 ______ --- ______ ---
prod_2 ______ --- ______ ---
prod_2 ______ --- ______ ---
prod_2 ______ --- ______ ---
prod_2 ______ --- ______ ---
prod_2 ______ --- ______ ---
prod_2 ______ --- ______ ---

prod_3 ______ --- ______ ---
prod_3 ______ --- ______ ---
prod_3 ______ --- ______ ---
prod_3 ______ --- ______ ---
prod_3 ______ --- ______ ---
prod_3 ______ --- ______ ---
prod_3 ______ --- ______ ---
prod_3 ______ --- ______ ---
prod_3 ______ --- ______ ---

Quand je met le TOP 3 au debut de la requête, j'ai comme résultat, les 3 lignes correspondant au 3 premiers clients du premier produit alors que je veux avoir par produit, les 3 meilleurs.

Y-a t-il une autre manière d'utiliser le top n de façon à avoir ce que veux?