LeetCode:Database 37.买下所有产品的客户
Posted Xiao Miao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:Database 37.买下所有产品的客户相关的知识,希望对你有一定的参考价值。
要求:写一条 SQL 查询语句,从 Customer 表中查询购买了 Product 表中所有产品的客户的 id。
Customer 表的结构:
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| customer_id | int |
| product_key | int |
+-------------+---------+
product_key 是 Customer 表的外键。
Product 表的结构:
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| product_key | int |
+-------------+---------+
product_key 是这张表的主键。
Customer 表:
+-------------+-------------+
| customer_id | product_key |
+-------------+-------------+
| 1 | 5 |
| 2 | 6 |
| 3 | 5 |
| 3 | 6 |
| 1 | 6 |
+-------------+-------------+
Product 表:
+-------------+
| product_key |
+-------------+
| 5 |
| 6 |
+-------------+
Result Table:
Result 表:
+-------------+
| customer_id |
+-------------+
| 1 |
| 3 |
+-------------+
购买了所有产品(5 和 6)的客户的 id 是 1 和 3 。
分析:
1.要求求出购买product表中所有产品的客户id,因此可以通过distinct去重求出每个客户购买不同产品的总数
2.求出product中产品总数,判断用户购买的产品总数等于product中产品总数的用户id就是最终结果
SQL语句:
select customer_id from(
select a.customer_id,count(distinct a.product_key) as c1,count(distinct b.product_key) as c2
from customer a
join product b
group by a.customer_id )c
where c1=c2;
以上是关于LeetCode:Database 37.买下所有产品的客户的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode:Database 83.列出指定时间段内所有的下单产品