前言
练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。
今日题目:
1045.买下所有产品的客户
表:Customer
列名 | 类型 |
---|---|
customer_id | int |
product_key | int |
该表可能包含重复的行。
customer_id 不为 NULL。
product_key 是 Product 表的外键(reference 列)。
表:Product
列名 | 类型 |
---|---|
product_key | int |
编写解决方案,报告 Customer 表中购买了 Product 表中所有产品的客户的 id。
返回结果表 无顺序要求 。
我那不值一提的想法:
- 首先梳理表内容,题干一共给了两张表,一张客户表,一张产品表,客户表记录了客户id,以及产品key,产品表记录了产品key
- 其次分析需求,需要找出用户买了了所有产品的客户id
- 对于买了所有产品的客户我们需要首先判断总的产品数量,也就是
select count(product_key) from Product
- 其次便可以对客户进行分组,查询产品的数量,这里注意要加distinct,因为可能会重复购买,查询条件就是购买产品的数量 = 总产品的数量
select customer_id
from Customer
group by customer_id
having count(distinct product_key) = (select count(product_key) from Product)
结果:
总结:
能运行就行。