Skip to content

TPC-DS-OBT Q58

TPC-DS-OBT benchmark · all TPC-DS-OBT queries

Representative SQL

Rendered for DataFusion with default parameters.

WITH ss_items AS (
SELECT
obt.item_i_item_id AS item_id,
SUM(obt.ext_sales_price) AS ss_item_rev
FROM tpcds_sales_returns_obt AS obt
WHERE
(
obt.item_sk = obt.item_i_item_sk
AND obt.sold_date_d_date IN (
SELECT
obt.sold_date_d_date
FROM tpcds_sales_returns_obt AS obt
WHERE
obt.sold_date_d_week_seq = (
SELECT
MAX(obt.sold_date_d_week_seq)
FROM tpcds_sales_returns_obt AS obt
WHERE
obt.sold_date_d_date = '1998-01-01' AND channel IN ('catalog', 'store', 'web')
)
AND channel IN ('catalog', 'store', 'web')
)
AND obt.sold_date_sk = obt.sold_date_d_date_sk
)
AND channel = 'store'
GROUP BY
obt.item_i_item_id
), cs_items AS (
SELECT
obt.item_i_item_id AS item_id,
SUM(obt.ext_sales_price) AS cs_item_rev
FROM tpcds_sales_returns_obt AS obt
WHERE
(
obt.item_sk = obt.item_i_item_sk
AND obt.sold_date_d_date IN (
SELECT
obt.sold_date_d_date
FROM tpcds_sales_returns_obt AS obt
WHERE
obt.sold_date_d_week_seq = (
SELECT
MAX(obt.sold_date_d_week_seq)
FROM tpcds_sales_returns_obt AS obt
WHERE
obt.sold_date_d_date = '1998-01-01' AND channel IN ('catalog', 'store', 'web')
)
AND channel IN ('catalog', 'store', 'web')
)
AND obt.sold_date_sk = obt.sold_date_d_date_sk
)
AND channel = 'catalog'
GROUP BY
obt.item_i_item_id
), ws_items AS (
SELECT
obt.item_i_item_id AS item_id,
SUM(obt.ext_sales_price) AS ws_item_rev
FROM tpcds_sales_returns_obt AS obt
WHERE
(
obt.item_sk = obt.item_i_item_sk
AND obt.sold_date_d_date IN (
SELECT
obt.sold_date_d_date
FROM tpcds_sales_returns_obt AS obt
WHERE
obt.sold_date_d_week_seq = (
SELECT
MAX(obt.sold_date_d_week_seq)
FROM tpcds_sales_returns_obt AS obt
WHERE
obt.sold_date_d_date = '1998-01-01' AND channel IN ('catalog', 'store', 'web')
)
AND channel IN ('catalog', 'store', 'web')
)
AND obt.sold_date_sk = obt.sold_date_d_date_sk
)
AND channel = 'web'
GROUP BY
obt.item_i_item_id
)
SELECT
ss_items.item_id,
ss_item_rev,
CAST(ss_item_rev AS DOUBLE PRECISION) / (
CAST((
ss_item_rev + cs_item_rev + ws_item_rev
) AS DOUBLE PRECISION) / 3
) * 100 AS ss_dev,
cs_item_rev,
CAST(cs_item_rev AS DOUBLE PRECISION) / (
CAST((
ss_item_rev + cs_item_rev + ws_item_rev
) AS DOUBLE PRECISION) / 3
) * 100 AS cs_dev,
ws_item_rev,
CAST(ws_item_rev AS DOUBLE PRECISION) / (
CAST((
ss_item_rev + cs_item_rev + ws_item_rev
) AS DOUBLE PRECISION) / 3
) * 100 AS ws_dev,
CAST((
ss_item_rev + cs_item_rev + ws_item_rev
) AS DOUBLE PRECISION) / 3 AS average
FROM ss_items, cs_items, ws_items
WHERE
ss_items.item_id = cs_items.item_id
AND ss_items.item_id = ws_items.item_id
AND ss_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev
AND ss_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev
AND cs_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev
AND cs_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev
AND ws_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev
AND ws_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev
ORDER BY
ss_items.item_id,
ss_item_rev
LIMIT 100

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

Source

Query text: benchbox/core/tpcds_obt/queries.py