You are a database expert and SQL optimizer. You will be given a SQL query and its rewritten variant. The rewritten query improves performance upon the original while maintaining equivalence. Your task is to create a new pair of original and rewritten queries that invoke a similar rewrite.

[ORIGINAL QUERY]```select i_item_id,i_item_desc,s_store_id,s_store_name,max(ss_net_profit) as store_sales_profit,max(sr_net_loss) as store_returns_loss,max(cs_net_profit) as catalog_sales_profit from store_sales,store_returns,catalog_sales,date_dim d1,date_dim d2,date_dim d3,store,item where d1.d_moy = 4 and d1.d_year = 1999 and d1.d_date_sk = ss_sold_date_sk and i_item_sk = ss_item_sk and s_store_sk = ss_store_sk and ss_customer_sk = sr_customer_sk and ss_item_sk = sr_item_sk and ss_ticket_number = sr_ticket_number and sr_returned_date_sk = d2.d_date_sk and d2.d_moy between 4 and 10 and d2.d_year = 1999 and sr_customer_sk = cs_bill_customer_sk and sr_item_sk = cs_item_sk and cs_sold_date_sk = d3.d_date_sk and d3.d_moy between 4 and 10 and d3.d_year = 1999 group by i_item_id,i_item_desc,s_store_id,s_store_name order by i_item_id,i_item_desc,s_store_id,s_store_name limit 100;```

[REWRITTEN QUERY]```WITH filtered_dates AS ( SELECT d_date_sk, d_moy, d_year FROM date_dim WHERE (d_moy = 4 AND d_year = 1999) OR (d_moy BETWEEN 4 AND 10 AND d_year = 1999) ), store_sales_filtered AS ( SELECT ss_sold_date_sk, ss_item_sk, ss_store_sk, ss_customer_sk, ss_ticket_number, ss_net_profit FROM store_sales JOIN filtered_dates d1 ON d1.d_date_sk = ss_sold_date_sk WHERE d1.d_moy = 4 AND d1.d_year = 1999 ), store_returns_filtered AS ( SELECT sr_customer_sk, sr_item_sk, sr_ticket_number, sr_returned_date_sk, sr_net_loss FROM store_returns JOIN filtered_dates d2 ON d2.d_date_sk = sr_returned_date_sk WHERE d2.d_moy BETWEEN 4 AND 10 AND d2.d_year = 1999 ), catalog_sales_filtered AS ( SELECT cs_bill_customer_sk, cs_item_sk, cs_sold_date_sk, cs_net_profit FROM catalog_sales JOIN filtered_dates d3 ON d3.d_date_sk = cs_sold_date_sk WHERE d3.d_moy BETWEEN 4 AND 10 AND d3.d_year = 1999 ) SELECT i.i_item_id, i.i_item_desc, s.s_store_id, s.s_store_name, MAX(ss.ss_net_profit) AS store_sales_profit, MAX(sr.sr_net_loss) AS store_returns_loss, MAX(cs.cs_net_profit) AS catalog_sales_profit FROM store_sales_filtered ss JOIN item i ON i.i_item_sk = ss.ss_item_sk JOIN store s ON s.s_store_sk = ss.ss_store_sk JOIN store_returns_filtered sr ON ss.ss_customer_sk = sr.sr_customer_sk AND ss.ss_item_sk = sr.sr_item_sk AND ss.ss_ticket_number = sr.sr_ticket_number JOIN catalog_sales_filtered cs ON sr.sr_customer_sk = cs.cs_bill_customer_sk AND sr.sr_item_sk = cs.cs_item_sk GROUP BY i.i_item_id, i.i_item_desc, s.s_store_id, s.s_store_name ORDER BY i.i_item_id, i.i_item_desc, s.s_store_id, s.s_store_name LIMIT 100;```

Now, consider the TPC-DS schema and create a new original and equivalent rewritten query pair such that the rewrite operation is similar to the provided demonstration.Keep the following points in mind while creating the new query pair:
1. The original query must contain CTEs.
2. The original query must make use of the following fact tables: ['catalog_sales']. Below is the join graph for these fact tables:
    ['catalog_sales(cs_bill_hdemo_sk) references household_demographics(hd_demo_sk);', 'catalog_sales(cs_warehouse_sk) references warehouse(w_warehouse_sk);', 'catalog_sales(cs_ship_date_sk) references date_dim(d_date_sk);']
4. The original query must employ 3 joins.
5. The original query must employ the following aggregate functions: ['min', 'avg'].
6. The original query must employ the following operators in its WHERE clause: [].
7. The rewritten query must be equivalent to the original query, and must follow a similar rewrite pattern as in the given example. Enclose the original and rewritten queries within ``` and ```.