
Sponsored
Sponsored
In this approach, we'll use SQL's GROUP BY and HAVING clause to find customers who bought all products. We will count the number of distinct product_keys for each customer_id and compare it to the total number of products.
Time Complexity: O(N * M), where N is the number of customers and M is the number of products due to the join and counting.
Space Complexity: O(K), where K is the number of distinct customer_ids in the result.
1// Since this is more about using SQL, we can't directly implement this in C.
2// Here we showcase how it can be structured logically in SQL.
3char* query = "
4SELECT customer_id
5FROM Customer
6GROUP BY customer_id
7HAVING COUNT(DISTINCT product_key) = (SELECT COUNT(*) FROM Product)
8";This SQL query groups rows by customer_id in the Customer table, then counts distinct product_key values for each group. The HAVING clause checks if the count for each customer_id equals the total count of products. Only customer_ids that satisfy this condition appear in the results.
In this approach, we'll manually replicate the SQL logic using hash maps or dictionaries in a programming language. We'll count the distinct products each customer has bought using a hashmap and verify if it matches the total number of products.
Time Complexity: O(N), processes each entry of customer_data.
Space Complexity: O(U), U being the summed size of sets in the dictionary.
1function
The function loops through customerData creating a Map where keys are customer IDs and values are Sets of unique products. Afterwards, we find entries where the size of the Sets equals totalProducts, mapping out those that have met the criterion.