本文主要是介绍【SQL】买下所有产品的顾客,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
题目
分析
代码
题目
Customer
表:
+-------------+---------+ | Column Name | Type | +-------------+---------+ | customer_id | int | | product_key | int | +-------------+---------+ 该表可能包含重复的行。 customer_id 不为 NULL。 product_key 是 Product 表的外键(reference 列)。
Product
表:
+-------------+---------+ | Column Name | Type | +-------------+---------+ | product_key | int | +-------------+---------+ product_key 是这张表的主键(具有唯一值的列)。
编写解决方案,报告 Customer
表中购买了 Product
表中所有产品的客户的 id。
返回结果表 无顺序要求 。
返回结果格式如下所示。
示例 1:
输入: Customer 表: +-------------+-------------+ | customer_id | product_key | +-------------+-------------+ | 1 | 5 | | 2 | 6 | | 3 | 5 | | 3 | 6 | | 1 | 6 | +-------------+-------------+ Product 表: +-------------+ | product_key | +-------------+ | 5 | | 6 | +-------------+ 输出: +-------------+ | customer_id | +-------------+ | 1 | | 3 | +-------------+ 解释: 购买了所有产品(5 和 6)的客户的 id 是 1 和 3 。
分析
两个表,Customer表和Product表
分析表中table的关系,无需连接,考虑子查询
报告 Customer 表中购买了 Product 表中所有产品的客户的 id
按照客户id分组,group by customer_id
报告购买所有种类产品的客户的id,种类数量通过Product表查询,select count(*) from Product
令每个用户不重复的product_key数量等于Product表的product_key数量
一个用户可能买下多个产品,having count(distinct product_key) = (select count(*) from Product )
代码
select customer_id
from Customer
group by customer_id
having count(distinct product_key) = (select count(*) from Product )
这篇关于【SQL】买下所有产品的顾客的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!