TPC-DS Q59 — Store Weekly Sales Year-over-Year
TPC-DS benchmark · all TPC-DS queries
Compares weekly sales by day of week between current and prior year
Representative SQL
Rendered for DataFusion with default parameters.
WITH wss AS ( SELECT d_week_seq, ss_store_sk, SUM(CASE WHEN ( d_day_name = 'Sunday' ) THEN ss_sales_price ELSE NULL END) AS sun_sales, SUM(CASE WHEN ( d_day_name = 'Monday' ) THEN ss_sales_price ELSE NULL END) AS mon_sales, SUM(CASE WHEN ( d_day_name = 'Tuesday' ) THEN ss_sales_price ELSE NULL END) AS tue_sales, SUM(CASE WHEN ( d_day_name = 'Wednesday' ) THEN ss_sales_price ELSE NULL END) AS wed_sales, SUM(CASE WHEN ( d_day_name = 'Thursday' ) THEN ss_sales_price ELSE NULL END) AS thu_sales, SUM(CASE WHEN ( d_day_name = 'Friday' ) THEN ss_sales_price ELSE NULL END) AS fri_sales, SUM(CASE WHEN ( d_day_name = 'Saturday' ) THEN ss_sales_price ELSE NULL END) AS sat_sales FROM store_sales, date_dim WHERE d_date_sk = ss_sold_date_sk GROUP BY d_week_seq, ss_store_sk)SELECT s_store_name1, s_store_id1, d_week_seq1, sun_sales1 / sun_sales2, mon_sales1 / mon_sales2, tue_sales1 / tue_sales2, wed_sales1 / wed_sales2, thu_sales1 / thu_sales2, fri_sales1 / fri_sales2, sat_sales1 / sat_sales2FROM ( SELECT s_store_name AS s_store_name1, wss.d_week_seq AS d_week_seq1, s_store_id AS s_store_id1, sun_sales AS sun_sales1, mon_sales AS mon_sales1, tue_sales AS tue_sales1, wed_sales AS wed_sales1, thu_sales AS thu_sales1, fri_sales AS fri_sales1, sat_sales AS sat_sales1 FROM wss, store, date_dim AS d WHERE d.d_week_seq = wss.d_week_seq AND ss_store_sk = s_store_sk AND d_month_seq BETWEEN 1185 AND 1185 + 11) AS y, ( SELECT s_store_name AS s_store_name2, wss.d_week_seq AS d_week_seq2, s_store_id AS s_store_id2, sun_sales AS sun_sales2, mon_sales AS mon_sales2, tue_sales AS tue_sales2, wed_sales AS wed_sales2, thu_sales AS thu_sales2, fri_sales AS fri_sales2, sat_sales AS sat_sales2 FROM wss, store, date_dim AS d WHERE d.d_week_seq = wss.d_week_seq AND ss_store_sk = s_store_sk AND d_month_seq BETWEEN 1185 + 12 AND 1185 + 23) AS xWHERE s_store_id1 = s_store_id2 AND d_week_seq1 = d_week_seq2 - 52ORDER BY s_store_name1, s_store_id1, d_week_seq1LIMIT 100Representative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def q59_expression_impl(ctx: DataFrameContext) -> Any: params = get_parameters(59) dms = params.get("d_month_seq", 1212)
col = ctx.col lit = ctx.lit
store_sales, date_dim, store = _tables(ctx, "store_sales", "date_dim", "store")
ss_with_date = store_sales.join(date_dim, left_on="ss_sold_date_sk", right_on="d_date_sk")
wss = ss_with_date.group_by(["d_week_seq", "ss_store_sk"]).agg(_q59_day_sales_aggs(ctx)) y = _q59_period_expression(ctx, wss, store, date_dim, dms, 0, "1") x = _q59_period_expression(ctx, wss, store, date_dim, dms, 12, "2")
return _sort_null_largest_expression( ctx, y.join( x, left_on=["s_store_id1", (col("d_week_seq1") + lit(52))], right_on=["s_store_id2", "d_week_seq2"], ) .with_columns(_q59_ratio_exprs(ctx)) .select(_Q59_RESULT_COLS), ["s_store_name1", "s_store_id1", "d_week_seq1"], ).head(100)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 factorqueries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQLprint(queries['59'])Parameter substitution for this benchmark is seed-driven; pass a seed for a specific stream’s parameters:
print(bench.get_query(59, 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', '59', family="expression").source) # or family="pandas"Source
Query text: _sources/tpc-ds/query_templates/query59.tpl