查找客户多次订购的产品

时间:2019-07-18 14:08:37

标签: mysql sql

有一个mysql表,用于存储在线商店的订购商品。 表格中最重要的字段:

  • align-middle
  • order_item_id
  • product_id
  • order_id(来自联接表)

我想找出哪些产品是同一客户一次又一次订购的产品。 基本上,我们只需要订购多次的客户。对于这些用户,我想检查是否订购了不止一次的产品。 例如。通常,您只订购一次激光打印机,但是稍后再订购碳粉。 当客户至少订购两次碳粉时,我需要提供信息,以检查哪些产品需要多次购买,或者对产品如此满意,以至于第二次订购。 我是否需要一些customer_email或子查询?

3 个答案:

答案 0 :(得分:2)

您可以尝试使用计数大于1的分组

select product_id, customer_email , count(*)
from  my_table  
group by product_id, customer_email 
having count(*) > 1 
order by count(*) desc  

答案 1 :(得分:0)

我想您可以同时使用两者来解决您的问题。

仅订购一次以上的客户:

select customer_email, count(order_id) from Table
group by customer_email having count(order_id)>1

通过另一个查询来添加产品数量的查询:

select product_id, count(product_id) from Table
where customer_email in (select customer_email from Table
                         group by customer_email having count(order_id)>1)
group by product_id having count(product_id)>1

这应该可以解决您的问题。

答案 2 :(得分:-1)

您可以使用以下方法多次订购产品:

select product_id, count(*) as num_orders, count(distinct customer_email) as num_customers
from t
group by product_id
having count(*) > count(distinct customer_email);

如果订单多于订购的客户,则某些客户订购了不止一次。

您还可以使用:

select distinct product_id
from t
group by product_id, customer_email
having count(*) > 1;

例如,如果您要查看订购超过2次的产品,这将提供更大的灵活性。