The operations team needs a small query pack for its midyear review. Each request states what one output row should represent. Use that grain to decide whether you need a join, an aggregate or a test for existence. The tasks use different filters from the teaching examples, so copying the last query without reading the request will give the wrong report.
Treat missing values deliberately and keep date windows half open. A report that excludes a customer should do so because the request excludes them, rather than because a join or NULL comparison removed them by accident. Return the requested columns only.