有一个mysql表,用于存储在线商店的订购商品。 表格中最重要的字段:
align-middle
order_item_id
product_id
order_id
(来自联接表)我想找出哪些产品是同一客户一次又一次订购的产品。
基本上,我们只需要订购多次的客户。对于这些用户,我想检查是否订购了不止一次的产品。
例如。通常,您只订购一次激光打印机,但是稍后再订购碳粉。
当客户至少订购两次碳粉时,我需要提供信息,以检查哪些产品需要多次购买,或者对产品如此满意,以至于第二次订购。
我是否需要一些customer_email
或子查询?
答案 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次的产品,这将提供更大的灵活性。