Skip to content

TPC-DS Q30 — Web Returns Customer Analysis

TPC-DS benchmark · all TPC-DS queries

Identifies customers with web return amounts above state average

Representative SQL

Rendered for DataFusion with default parameters.

WITH customer_total_return AS (
SELECT
wr_returning_customer_sk AS ctr_customer_sk,
ca_state AS ctr_state,
SUM(wr_return_amt) AS ctr_total_return
FROM web_returns, date_dim, customer_address
WHERE
wr_returned_date_sk = d_date_sk
AND d_year = 2002
AND wr_returning_addr_sk = ca_address_sk
GROUP BY
wr_returning_customer_sk,
ca_state
)
SELECT
c_customer_id,
c_salutation,
c_first_name,
c_last_name,
c_preferred_cust_flag,
c_birth_day,
c_birth_month,
c_birth_year,
c_birth_country,
c_login,
c_email_address,
c_last_review_date_sk,
ctr_total_return
FROM customer_total_return AS ctr1, customer_address, customer
WHERE
ctr1.ctr_total_return > (
SELECT
AVG(ctr_total_return) * 1.2
FROM customer_total_return AS ctr2
WHERE
ctr1.ctr_state = ctr2.ctr_state
)
AND ca_address_sk = c_current_addr_sk
AND ca_state = 'IL'
AND ctr1.ctr_customer_sk = c_customer_sk
ORDER BY
c_customer_id,
c_salutation,
c_first_name,
c_last_name,
c_preferred_cust_flag,
c_birth_day,
c_birth_month,
c_birth_year,
c_birth_country,
c_login,
c_email_address,
c_last_review_date_sk,
ctr_total_return
LIMIT 100

Representative DataFrame

Expression family (Polars, PySpark, DataFusion), default parameters.

def impl(ctx: DataFrameContext) -> Any:
return engine(ctx, spec)

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 TPCDS
bench = TPCDS(scale_factor=1.0) # your scale factor
queries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQL
print(queries['30'])

Parameter substitution for this benchmark is seed-driven; pass a seed for a specific stream’s parameters:

print(bench.get_query(30, scale_factor=1.0, seed=42, dialect="datafusion"))

For the DataFrame form:

from benchbox.core.query_catalog import get_dataframe_render
print(get_dataframe_render('tpcds', '30', family="expression").source) # or family="pandas"

Source

Query text: _sources/tpc-ds/query_templates/query30.tpl