Skip to content

Commit

Permalink
Medium LC problem = CustomersWhoBoughtAllProducts.sql
Browse files Browse the repository at this point in the history
  • Loading branch information
absognety authored Jun 9, 2024
1 parent 04e7a96 commit cc1d6df
Showing 1 changed file with 69 additions and 0 deletions.
69 changes: 69 additions & 0 deletions LeetCode/SQL50/CustomersWhoBoughtAllProducts.sql
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
);

0 comments on commit cc1d6df

Please sign in to comment.