-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path1045-CustomersWhoBoughtAllProducts.sql
More file actions
88 lines (85 loc) · 2.52 KB
/
1045-CustomersWhoBoughtAllProducts.sql
File metadata and controls
88 lines (85 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
-- 1045. Customers Who Bought All Products
-- Table: Customer
-- +-------------+---------+
-- | Column Name | Type |
-- +-------------+---------+
-- | customer_id | int |
-- | product_key | int |
-- +-------------+---------+
-- There is no primary key for this table. It may contain duplicates.
-- product_key is a foreign key to Product table.
--
-- Table: Product
-- +-------------+---------+
-- | Column Name | Type |
-- +-------------+---------+
-- | product_key | int |
-- +-------------+---------+
-- product_key is the primary key column for this table.
-- Write an SQL query to report the customer ids from the Customer table that bought all the products in the Product table.
-- Return the result table in any order.
-- The query result format is in the following example.
--
-- Example 1:
-- Input:
-- Customer table:
-- +-------------+-------------+
-- | customer_id | product_key |
-- +-------------+-------------+
-- | 1 | 5 |
-- | 2 | 6 |
-- | 3 | 5 |
-- | 3 | 6 |
-- | 1 | 6 |
-- +-------------+-------------+
-- Product table:
-- +-------------+
-- | product_key |
-- +-------------+
-- | 5 |
-- | 6 |
-- +-------------+
-- Output:
-- +-------------+
-- | customer_id |
-- +-------------+
-- | 1 |
-- | 3 |
-- +-------------+
-- Explanation:
-- The customers who bought all the products (5 and 6) are customers with IDs 1 and 3.
-- Create table If Not Exists Customer (customer_id int, product_key int)
-- Create table Product (product_key int)
-- Truncate table Customer
-- insert into Customer (customer_id, product_key) values ('1', '5')
-- insert into Customer (customer_id, product_key) values ('2', '6')
-- insert into Customer (customer_id, product_key) values ('3', '5')
-- insert into Customer (customer_id, product_key) values ('3', '6')
-- insert into Customer (customer_id, product_key) values ('1', '6')
-- Truncate table Product
-- insert into Product (product_key) values ('5')
-- insert into Product (product_key) values ('6')
-- Write your MySQL query statement below
SELECT
customer_id
FROM
(
SELECT
customer_id,
COUNT(DISTINCT product_key) AS num
FROM
Customer
GROUP BY
customer_id
) AS a
WHERE
a.num = (SELECT COUNT(*) FROM Product)
-- HAVING
SELECT
customer_id
FROM
Customer
GROUP BY
customer_id
having
COUNT(DISTINCT product_key) = ( SELECT COUNT(*) FROM Product )