Query optimization
Optimize an answer you have already validated. A faster wrong result is not an improvement.
Reduce unnecessary work
Read only needed columns and filter at the earliest stage that preserves meaning. Moving a condition across an outer join or aggregation can change the answer, so validate the rewrite.
Searchable predicates
A direct range on order_date can be easier to index than wrapping every date in a function. For January, use a start boundary and an exclusive February boundary.
Avoid repeated work
Pre-aggregate at the grain you need and reuse clear logic. Whether a CTE avoids physical repeated work depends on the engine and plan, not the fact that it has a name.
Compare with evidence
Measure runtime, reads and resource use on representative data. Keep a before-and-after result comparison. One run on six customers cannot establish a production performance benefit.