TPC-DS Q98 — Store Sales Item Band
TPC-DS benchmark · all TPC-DS queries
Reports store sales by item category for specific categories
Representative SQL
Rendered for DataFusion with default parameters.
SELECT i_item_id, i_item_desc, i_category, i_class, i_current_price, SUM(ss_ext_sales_price) AS itemrevenue, SUM(ss_ext_sales_price) * 100 / SUM(SUM(ss_ext_sales_price)) OVER (PARTITION BY i_class) AS revenueratioFROM store_sales, item, date_dimWHERE ss_item_sk = i_item_sk AND i_category IN ('Jewelry', 'Sports', 'Books') AND ss_sold_date_sk = d_date_sk AND d_date BETWEEN CAST('2001-01-12' AS DATE) AND ( CAST('2001-01-12' AS DATE) + INTERVAL '30 DAY' )GROUP BY i_item_id, i_item_desc, i_category, i_class, i_current_priceORDER BY i_category, i_class, i_item_id, i_item_desc, revenueratioRepresentative DataFrame
Expression family (Polars, PySpark, DataFusion), default parameters.
def impl(ctx: DataFrameContext) -> Any: return helper(ctx, query_id, *helper_args)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['98'])Parameter substitution for this benchmark is seed-driven; pass a seed for a specific stream’s parameters:
print(bench.get_query(98, 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', '98', family="expression").source) # or family="pandas"Source
Query text: _sources/tpc-ds/query_templates/query98.tpl