| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- WITH my_customers AS (
- SELECT DISTINCT
- c_customer_sk,
- c_current_addr_sk
- FROM
- (SELECT
- cs_sold_date_sk sold_date_sk,
- cs_bill_customer_sk customer_sk,
- cs_item_sk item_sk
- FROM catalog_sales
- UNION ALL
- SELECT
- ws_sold_date_sk sold_date_sk,
- ws_bill_customer_sk customer_sk,
- ws_item_sk item_sk
- FROM web_sales
- ) cs_or_ws_sales,
- item,
- date_dim,
- customer
- WHERE sold_date_sk = d_date_sk
- AND item_sk = i_item_sk
- AND i_category = 'Women'
- AND i_class = 'maternity'
- AND c_customer_sk = cs_or_ws_sales.customer_sk
- AND d_moy = 12
- AND d_year = 1998
- )
- , my_revenue AS (
- SELECT
- c_customer_sk,
- sum(ss_ext_sales_price) AS revenue
- FROM my_customers,
- store_sales,
- customer_address,
- store,
- date_dim
- WHERE c_current_addr_sk = ca_address_sk
- AND ca_county = s_county
- AND ca_state = s_state
- AND ss_sold_date_sk = d_date_sk
- AND c_customer_sk = ss_customer_sk
- AND d_month_seq BETWEEN (SELECT DISTINCT d_month_seq + 1
- FROM date_dim
- WHERE d_year = 1998 AND d_moy = 12)
- AND (SELECT DISTINCT d_month_seq + 3
- FROM date_dim
- WHERE d_year = 1998 AND d_moy = 12)
- GROUP BY c_customer_sk
- )
- , segments AS
- (SELECT cast((revenue / 50) AS INT) AS segment
- FROM my_revenue)
- SELECT
- segment,
- count(*) AS num_customers,
- segment * 50 AS segment_base
- FROM segments
- GROUP BY segment
- ORDER BY segment, num_customers
- LIMIT 100
|