TPC-DS-OBT Q14a
TPC-DS-OBT benchmark · all TPC-DS-OBT queries
Representative SQL
Rendered for DataFusion with default parameters.
WITH cross_items AS ( SELECT item_i_item_sk FROM ( SELECT DISTINCT item_i_item_sk, item_i_brand_id, item_i_class_id, item_i_category_id FROM tpcds_sales_returns_obt WHERE NOT item_i_item_sk IS NULL ) AS i JOIN ( SELECT item_i_brand_id, item_i_class_id, item_i_category_id FROM tpcds_sales_returns_obt WHERE channel = 'store' AND sold_date_d_year BETWEEN 1998 AND 1998 + 2 INTERSECT SELECT item_i_brand_id, item_i_class_id, item_i_category_id FROM tpcds_sales_returns_obt WHERE channel = 'catalog' AND sold_date_d_year BETWEEN 1998 AND 1998 + 2 INTERSECT SELECT item_i_brand_id, item_i_class_id, item_i_category_id FROM tpcds_sales_returns_obt WHERE channel = 'web' AND sold_date_d_year BETWEEN 1998 AND 1998 + 2 ) AS x ON i.item_i_brand_id = x.item_i_brand_id AND i.item_i_class_id = x.item_i_class_id AND i.item_i_category_id = x.item_i_category_id), avg_sales AS ( SELECT AVG(quantity * list_price) AS average_sales FROM tpcds_sales_returns_obt WHERE sold_date_d_year BETWEEN 1998 AND 1998 + 2)SELECT channel, i_brand_id, i_class_id, i_category_id, SUM(sales), SUM(number_sales)FROM ( SELECT channel, item_i_brand_id AS i_brand_id, item_i_class_id AS i_class_id, item_i_category_id AS i_category_id, SUM(quantity * list_price) AS sales, COUNT(*) AS number_sales FROM tpcds_sales_returns_obt WHERE item_sk IN ( SELECT item_i_item_sk FROM cross_items ) AND sold_date_d_year = 1998 + 2 AND sold_date_d_moy = 11 GROUP BY channel, item_i_brand_id, item_i_class_id, item_i_category_id HAVING SUM(quantity * list_price) > ( SELECT average_sales FROM avg_sales )) AS yGROUP BY ROLLUP ( channel, i_brand_id, i_class_id, i_category_id )ORDER BY channel, i_brand_id, i_class_id, i_category_idLIMIT 100Representative DataFrame
No DataFrame implementation is registered for this query.
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 TPCDSOBT
bench = TPCDSOBT(scale_factor=1.0) # your scale factorqueries = bench.get_queries(dialect="datafusion") # your platform's dialect; drop dialect= for native SQLprint(queries['14a'])Source
Query text: benchbox/core/tpcds_obt/queries.py