-
Notifications
You must be signed in to change notification settings - Fork 22
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Medium LC problem = CustomersWhoBoughtAllProducts.sql
- Loading branch information
Showing
1 changed file
with
69 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
-- Table: Customer | ||
|
||
-- +-------------+---------+ | ||
-- | Column Name | Type | | ||
-- +-------------+---------+ | ||
-- | customer_id | int | | ||
-- | product_key | int | | ||
-- +-------------+---------+ | ||
-- This table may contain duplicates rows. | ||
-- customer_id is not NULL. | ||
-- product_key is a foreign key (reference column) to Product table. | ||
|
||
-- Table: Product | ||
|
||
-- +-------------+---------+ | ||
-- | Column Name | Type | | ||
-- +-------------+---------+ | ||
-- | product_key | int | | ||
-- +-------------+---------+ | ||
-- product_key is the primary key (column with unique values) for this table. | ||
|
||
-- Write a solution 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 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. | ||
|
||
-- Write your PostgreSQL query statement below | ||
-- Solution | ||
with products_count as ( | ||
select count(product_key) as num_products from Product | ||
) | ||
select customer_id from ( | ||
select customer_id, | ||
count(distinct product_key) as num_products_bought | ||
from Customer group by customer_id | ||
) tb where tb.num_products_bought in ( | ||
select num_products from products_count | ||
); |