Skip to content

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_brand
FROM 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 sc
WHERE
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_sk
ORDER BY
s_store_name,
i_item_desc
LIMIT 100

Representative 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 factor
queries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQL
print(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