TPC-DS Q39 — Inventory Variance Monthly
TPC-DS benchmark · all TPC-DS queries
Compares inventory variance (coefficient of variation) across consecutive months
Representative SQL
Rendered for DataFusion with default parameters.
WITH inv AS ( SELECT w_warehouse_name, w_warehouse_sk, i_item_sk, d_moy, stdev, mean, CASE mean WHEN 0 THEN NULL ELSE stdev / mean END AS cov FROM ( SELECT w_warehouse_name, w_warehouse_sk, i_item_sk, d_moy, STDDEV_SAMP(inv_quantity_on_hand) AS stdev, AVG(inv_quantity_on_hand) AS mean FROM inventory, item, warehouse, date_dim WHERE inv_item_sk = i_item_sk AND inv_warehouse_sk = w_warehouse_sk AND inv_date_sk = d_date_sk AND d_year = 1998 GROUP BY w_warehouse_name, w_warehouse_sk, i_item_sk, d_moy ) AS foo WHERE CASE mean WHEN 0 THEN 0 ELSE stdev / mean END > 1)SELECT inv1.w_warehouse_sk, inv1.i_item_sk, inv1.d_moy, inv1.mean, inv1.cov, inv2.w_warehouse_sk, inv2.i_item_sk, inv2.d_moy, inv2.mean, inv2.covFROM inv AS inv1, inv AS inv2WHERE inv1.i_item_sk = inv2.i_item_sk AND inv1.w_warehouse_sk = inv2.w_warehouse_sk AND inv1.d_moy = 4 AND inv2.d_moy = 4 + 1ORDER BY inv1.w_warehouse_sk, inv1.i_item_sk, inv1.d_moy, inv1.mean, inv1.cov, inv2.d_moy, inv2.mean, inv2.covRepresentative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def q39_expression_impl(ctx: DataFrameContext) -> Any: return _q39_expression(ctx, first_month_min_cov=None)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['39'])Parameter substitution for this benchmark is seed-driven; pass a seed for a specific stream’s parameters:
print(bench.get_query(39, 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', '39', family="expression").source) # or family="pandas"Source
Query text: _sources/tpc-ds/query_templates/query39.tpl