TPC-DS Q65 — Store Sales Item Profit
TPC-DS benchmark · all TPC-DS queries
Reports store sales item revenue analysis
Representative SQL
Rendered for DataFusion with default parameters.
SELECT s_store_name, i_item_desc, sc.revenue, i_current_price, i_wholesale_cost, i_brandFROM store, item, ( SELECT ss_store_sk, AVG(revenue) AS ave FROM ( SELECT ss_store_sk, ss_item_sk, SUM(ss_sales_price) AS revenue FROM store_sales, date_dim WHERE ss_sold_date_sk = d_date_sk AND d_month_seq BETWEEN 1212 AND 1212 + 11 GROUP BY ss_store_sk, ss_item_sk ) AS sa GROUP BY ss_store_sk) AS sb, ( SELECT ss_store_sk, ss_item_sk, SUM(ss_sales_price) AS revenue FROM store_sales, date_dim WHERE ss_sold_date_sk = d_date_sk AND d_month_seq BETWEEN 1212 AND 1212 + 11 GROUP BY ss_store_sk, ss_item_sk) AS scWHERE sb.ss_store_sk = sc.ss_store_sk AND sc.revenue <= 0.1 * sb.ave AND s_store_sk = sc.ss_store_sk AND i_item_sk = sc.ss_item_skORDER BY s_store_name, i_item_descLIMIT 100Representative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def q65_expression_impl(ctx: DataFrameContext) -> Any: params = get_parameters(65) dms = params.get("dms", 1212) col = ctx.col lit = ctx.lit sales = ctx.get_table("store_sales").join( ctx.get_table("date_dim").filter(col("d_month_seq").is_between(dms, dms + 11)), left_on="ss_sold_date_sk", right_on="d_date_sk", ) revenue = sales.group_by("ss_store_sk", "ss_item_sk").agg( _sum_or_null_expression(ctx, col("ss_sales_price")).alias("revenue") ) store_avg = revenue.group_by("ss_store_sk").agg(col("revenue").mean().alias("ave")) flagged = ( revenue.join(store_avg, on="ss_store_sk") .filter(col("revenue") <= lit(0.1) * col("ave")) .select("ss_store_sk", "ss_item_sk", "revenue") ) return ( flagged.join(ctx.get_table("store"), left_on="ss_store_sk", right_on="s_store_sk") .join(ctx.get_table("item"), left_on="ss_item_sk", right_on="i_item_sk") .select("s_store_name", "i_item_desc", "revenue", "i_current_price", "i_wholesale_cost", "i_brand") .sort(["s_store_name", "i_item_desc"], nulls_last=True) .limit(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['65'])Parameter substitution for this benchmark is seed-driven; pass a seed for a specific stream’s parameters:
print(bench.get_query(65, 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', '65', family="expression").source) # or family="pandas"Source
Query text: _sources/tpc-ds/query_templates/query65.tpl