À l'aide de requête SQL pour trouver les détails de clients qui ont commandé > x les types de produits
Veuillez noter que j'ai vu une requête similaire ici, mais pense que ma requête est assez différent pour le mérite d'une question distincte.
Supposons qu'il existe une base de données avec les tables suivantes:
- customer_table avec customer_ID (champ clé), customer_name
- orders_table avec order_ID (champ clé), customer_ID, product_ID
Supposons maintenant je voudrais trouver les noms de tous les clients qui ont commandé plus de 10 différents types de produit, et le nombre de types de produits qu'ils ont commandés. Plusieurs commandes d'un même produit ne compte pas.
Je pense que la requête ci-dessous devrait fonctionner, mais se poser les questions suivantes:
- Est l'utilisation de count(distinct xxx) généralement admis avec un "groupe" déclaration?
- Est la méthode que j'utilise de façon standard? Quelqu'un avez des meilleures idées (par exemple, sans la participation des tables temporaires)?
Ci-dessous est ma requête
select T1.customer_name, T1.customer_ID, T2.number_of_products_ordered
from customer_table T1
inner join
(
select cust.customer_ID as customer_identity, count(distinct ord.product_ID) as number_of_products_ordered
from customer_table cust
inner join order_table ord on cust.customer_ID=ord.customer_ID
group by ord.customer_ID, ord.product_ID
having count(distinct ord.product_ID) > 10
) T2
on T1.customer_ID=T2.customer_identity
order by T2.number_of_products_ordered, T1.customer_name
Vous devez vous connecter pour publier un commentaire.
N'est-ce pas ce que vous recherchez? Semble être un peu plus simple. Testé sur SQL Server fonctionne très bien.
Vous pourriez le faire plus simplement: