TPC-DS-OBT Q54
TPC-DS-OBT benchmark · all TPC-DS-OBT queries
Representative SQL
Rendered for DataFusion with default parameters.
WITH my_customers AS ( SELECT DISTINCT obt.bill_customer_c_customer_sk, obt.bill_customer_c_current_addr_sk FROM tpcds_sales_returns_obt AS obt CROSS JOIN ( SELECT obt.sold_date_sk AS sold_date_sk, obt.bill_customer_sk AS customer_sk, obt.item_sk AS item_sk FROM tpcds_sales_returns_obt AS obt WHERE channel = 'catalog' UNION ALL SELECT obt.sold_date_sk AS sold_date_sk, obt.bill_customer_sk AS customer_sk, obt.item_sk AS item_sk FROM tpcds_sales_returns_obt AS obt WHERE channel = 'web' ) AS cs_or_ws_sales WHERE ( obt.sold_date_sk = obt.sold_date_d_date_sk AND obt.item_sk = obt.item_i_item_sk AND obt.item_i_category = '0' AND obt.item_i_class = '0' AND obt.bill_customer_c_customer_sk = cs_or_ws_sales.customer_sk AND obt.sold_date_d_moy = 1 AND obt.sold_date_d_year = 1998 ) AND channel IN ('catalog', 'store', 'web')), my_revenue AS ( SELECT obt.bill_customer_c_customer_sk, SUM(obt.ext_sales_price) AS revenue FROM tpcds_sales_returns_obt AS obt CROSS JOIN my_customers AS my_customers WHERE ( obt.bill_customer_c_current_addr_sk = obt.bill_addr_ca_address_sk AND obt.bill_addr_ca_county = obt.store_s_county AND obt.bill_addr_ca_state = obt.store_s_state AND obt.sold_date_sk = obt.sold_date_d_date_sk AND obt.bill_customer_c_customer_sk = obt.ship_customer_sk AND obt.sold_date_d_month_seq BETWEEN ( SELECT DISTINCT obt.sold_date_d_month_seq + 1 FROM tpcds_sales_returns_obt AS obt WHERE ( obt.sold_date_d_year = 1998 AND obt.sold_date_d_moy = 1 ) AND channel IN ('catalog', 'store', 'web') ) AND ( SELECT DISTINCT obt.sold_date_d_month_seq + 3 FROM tpcds_sales_returns_obt AS obt WHERE ( obt.sold_date_d_year = 1998 AND obt.sold_date_d_moy = 1 ) AND channel IN ('catalog', 'store', 'web') ) ) AND channel = 'store' GROUP BY obt.bill_customer_c_customer_sk), segments AS ( SELECT CAST(( CAST(revenue AS DOUBLE PRECISION) / 50 ) AS INT) AS segment FROM my_revenue)SELECT segment, COUNT(*) AS num_customers, segment * 50 AS segment_baseFROM segmentsGROUP BY segmentORDER BY segment, num_customersLIMIT 100Representative DataFrame
No DataFrame implementation is registered for this query.
Get the exact query for your run
The blocks above are representative. To get the precise statement a specific platform runs at a specific scale, substitute your own values:
from benchbox import TPCDSOBT
bench = TPCDSOBT(scale_factor=1.0) # your scale factorqueries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQLprint(queries['54'])Source
Query text: benchbox/core/tpcds_obt/queries.py