查找所有在产品 A、产品 B、产品 C 中至少购买过 1 次的客户

问题描述 投票:0回答:1

我正在尝试识别在单独订单中购买了所有 3 种特定产品的客户。每个客户应该至少购买过所有三种产品一次。 我的数据如下所示:

电子邮件 订单_id 产品_id
电子邮件1 123456 A
电子邮件1 456789 B
电子邮件1 985432 C
电子邮件2 345533 B
电子邮件2 768843 C
电子邮件2 984452 A
电子邮件3 453645 A
电子邮件3 453645 B
电子邮件3 674452 C

我期待以下结果:

独特的电子邮件
电子邮件1
电子邮件2

我正在使用下面的代码,但它没有给我正确的结果:

SELECT DISTINCT email as email
FROM table
WHERE product_id IN ('A', 'B', 'C')
GROUP BY email
HAVING COUNT(DISTINCT product_id) = 3
sql mysql postgresql sqlite snowflake-cloud-data-platform
1个回答
0
投票

假设 MySQL 因为你首先标记了它

您缺少一个参数来确保它们来自不同的订单。

SELECT email
FROM orders
WHERE product_id IN ('A', 'B', 'C')
GROUP BY email
HAVING COUNT(DISTINCT product_id) = 3 
   AND COUNT(DISTINCT order_id) >= 3;

输出如您所料。

email
Email 1
Email 2

SQL小提琴:https://sqlfiddle.com/mysql/online-compiler?id=55ba49bd-9853-4854-bfb0-8eda0908bb6a

© www.soinside.com 2019 - 2024. All rights reserved.