1045. 买下所有产品的客户

【题目】

Customer 表:

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| customer_id | int     |
| product_key | int     |
+-------------+---------+
product_key 是 Customer 表的外键。

Product 表:

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| product_key | int     |
+-------------+---------+
product_key 是这张表的主键。

 

写一条 SQL 查询语句,从 Customer 表中查询购买了 Product 表中所有产品的客户的 id。

示例:

Customer 表:
+-------------+-------------+
| customer_id | product_key |
+-------------+-------------+
| 1           | 5           |
| 2           | 6           |
| 3           | 5           |
| 3           | 6           |
| 1           | 6           |
+-------------+-------------+

Product 表:
+-------------+
| product_key |
+-------------+
| 5           |
| 6           |
+-------------+

Result 表:
+-------------+
| customer_id |
+-------------+
| 1           |
| 3           |
+-------------+
购买了所有产品(5 和 6)的客户的 id 是 1 和 3 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/customers-who-bought-all-products

【思路】

判断groupBy后列元素是否相等,可以嵌套一个select语句,判断两边count是否相等即可。

【代码】

SELECT DISTINCT customer_id 
FROM Customer 
WHERE product_key in (SELECT product_key FROM Product)
GROUP BY customer_id 
Having COUNT(DISTINCT (product_key)) = (SELECT COUNT(DISTINCT product_key) FROM Product)

 

posted @ 2023-05-19 09:27  梦想是能睡八小时的猪  阅读(28)  评论(0)    收藏  举报