-- SQLBench-DS query 64 derived from TPC-DS query 64 under the terms of the TPC Fair Use Policy.
-- TPC-DS queries are Copyright 2021 Transaction Processing Performance Council.
-- This query was generated at scale factor 1.
with
  cs_ui as (
    select
      cs_item_sk,
      sum(cs_ext_list_price) as sale,
      sum(
        cr_refunded_cash + cr_reversed_charge + cr_store_credit
      ) as refund
    from
      catalog_sales,
      catalog_returns
    where
      cs_item_sk = cr_item_sk
      and cs_order_number = cr_order_number
    group by
      cs_item_sk
    having
      sum(cs_ext_list_price) > 2 * sum(
        cr_refunded_cash + cr_reversed_charge + cr_store_credit
      )
  ),
  cross_sales as (
    select
      i_product_name product_name,
      i_item_sk item_sk,
      s_store_name store_name,
      s_zip store_zip,
      ad1.ca_street_number b_street_number,
      ad1.ca_street_name b_street_name,
      ad1.ca_city b_city,
      ad1.ca_zip b_zip,
      ad2.ca_street_number c_street_number,
      ad2.ca_street_name c_street_name,
      ad2.ca_city c_city,
      ad2.ca_zip c_zip,
      d1.d_year as syear,
      d2.d_year as fsyear,
      d3.d_year s2year,
      count(*) cnt,
      sum(ss_wholesale_cost) s1,
      sum(ss_list_price) s2,
      sum(ss_coupon_amt) s3
    FROM
      store_sales,
      store_returns,
      cs_ui,
      date_dim d1,
      date_dim d2,
      date_dim d3,
      store,
      customer,
      customer_demographics cd1,
      customer_demographics cd2,
      promotion,
      household_demographics hd1,
      household_demographics hd2,
      customer_address ad1,
      customer_address ad2,
      income_band ib1,
      income_band ib2,
      item
    WHERE
      ss_store_sk = s_store_sk
      AND ss_sold_date_sk = d1.d_date_sk
      AND ss_customer_sk = c_customer_sk
      AND ss_cdemo_sk = cd1.cd_demo_sk
      AND ss_hdemo_sk = hd1.hd_demo_sk
      AND ss_addr_sk = ad1.ca_address_sk
      and ss_item_sk = i_item_sk
      and ss_item_sk = sr_item_sk
      and ss_ticket_number = sr_ticket_number
      and ss_item_sk = cs_ui.cs_item_sk
      and c_current_cdemo_sk = cd2.cd_demo_sk
      AND c_current_hdemo_sk = hd2.hd_demo_sk
      AND c_current_addr_sk = ad2.ca_address_sk
      and c_first_sales_date_sk = d2.d_date_sk
      and c_first_shipto_date_sk = d3.d_date_sk
      and ss_promo_sk = p_promo_sk
      and hd1.hd_income_band_sk = ib1.ib_income_band_sk
      and hd2.hd_income_band_sk = ib2.ib_income_band_sk
      and cd1.cd_marital_status <> cd2.cd_marital_status
      and i_color in (
        'light',
        'cyan',
        'burnished',
        'green',
        'almond',
        'smoke'
      )
      and i_current_price between 22 and 22  + 10
      and i_current_price between 22 + 1 and 22  + 15
    group by
      i_product_name,
      i_item_sk,
      s_store_name,
      s_zip,
      ad1.ca_street_number,
      ad1.ca_street_name,
      ad1.ca_city,
      ad1.ca_zip,
      ad2.ca_street_number,
      ad2.ca_street_name,
      ad2.ca_city,
      ad2.ca_zip,
      d1.d_year,
      d2.d_year,
      d3.d_year
  )
select
  cs1.product_name,
  cs1.store_name,
  cs1.store_zip,
  cs1.b_street_number,
  cs1.b_street_name,
  cs1.b_city,
  cs1.b_zip,
  cs1.c_street_number,
  cs1.c_street_name,
  cs1.c_city,
  cs1.c_zip,
  cs1.syear,
  cs1.cnt,
  cs1.s1 as s11,
  cs1.s2 as s21,
  cs1.s3 as s31,
  cs2.s1 as s12,
  cs2.s2 as s22,
  cs2.s3 as s32,
  cs2.syear,
  cs2.cnt
from
  cross_sales cs1,
  cross_sales cs2
where
  cs1.item_sk = cs2.item_sk
  and cs1.syear = 2001
  and cs2.syear = 2001 + 1
  and cs2.cnt <= cs1.cnt
  and cs1.store_name = cs2.store_name
  and cs1.store_zip = cs2.store_zip
order by
  cs1.product_name,
  cs1.store_name,
  cs2.cnt,
  cs1.s1,
  cs2.s1;
