#1084
Sales Analysis III
EasyDatabaseHash MapArray
Approaches
Brute ForceOptimal
Complexity Comparison
| Brute Force | Optimal Solution★ | |
|---|---|---|
| Time | O(n²) | O(n) |
| Space | O(1) | O(n) |
💡
Intuition
Time O(n)Space O(n)
In this approach, we will use a single query to filter products based on sales that occurred only in the specified date range. This is more efficient as it avoids unnecessary checks.
⚙️
Algorithm
3 steps- 1Step 1: Select products from the Product table that have sales in the Sales table.
- 2Step 2: Group the results by product_id and ensure that all sales for each product fall within the date range.
- 3Step 3: Use a HAVING clause to filter out products that have sales outside the specified date range.
solution.py5 lines
1SELECT p.product_id, p.product_name
2FROM Product p
3JOIN Sales s ON p.product_id = s.product_id
4GROUP BY p.product_id, p.product_name
5HAVING MIN(s.sale_date) >= '2019-01-01' AND MAX(s.sale_date) <= '2019-03-31';ℹ
Complexity note: This complexity is efficient because we are using a single scan through the sales data and grouping it, rather than checking each product against all sales.
- 1Understanding the date range and ensuring all sales fall within it is crucial.
- 2Using aggregation functions like MIN and MAX can simplify checks for conditions across groups.
Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.