[英]Using SQL query to find details of customers who ordered > x types of products
Please note that I have seen a similar query here , but think my query is different enough to merit a separate question. 请注意,我在这里看到过类似的查询,但认为我的查询不同,值得单独提问。
Suppose that there is a database with the following tables: 假设有一个包含以下表的数据库:
Now suppose I would like to find the names of all the customers who have ordered more than 10 different types of product, and the number of types of products they ordered. 现在假设我想找到订购了10种以上不同类型产品的所有客户的名称,以及他们订购的产品类型的数量。 Multiple orders of the same product does not count. 同一产品的多个订单不计算在内。
I think the query below should work, but have the following questions: 我认为下面的查询应该有效,但有以下问题:
Below is my query 以下是我的查询
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
Isn't that what you are looking for? 这不是你想要的吗? Seems to be a little bit simpler. 似乎有点简单。 Tested it on SQL Server - works fine. 在SQL Server上测试它 - 工作正常。
SELECT customer_name, COUNT(DISTINCT product_ID) as products_count FROM customer_table
INNER JOIN orders_table ON customer_table.customer_ID = orders_table.customer_ID
GROUP BY customer_table.customer_ID, customer_name
HAVING COUNT(DISTINCT product_ID) > 10
You could do it more simply: 你可以更简单地做到:
select
c.id,
c.cname,
count(distinct o.pid) as `uniques`
from o join c
on c.id = o.cid
group by c.id
having `uniques` > 10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.