Skip to content

TPC-DS-OBT Q78

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

Representative SQL

Rendered for DataFusion with default parameters.

WITH ws AS (
SELECT
obt.sold_date_d_year AS ws_sold_year,
obt.item_sk,
obt.bill_customer_sk AS ws_customer_sk,
SUM(obt.quantity) AS ws_qty,
SUM(obt.wholesale_cost) AS ws_wc,
SUM(obt.sales_price) AS ws_sp
FROM tpcds_sales_returns_obt AS obt
WHERE
(
(
obt.sale_id IS NULL
AND (
obt.sale_id = obt.sale_id AND obt.item_sk = obt.item_sk
)
)
AND obt.sold_date_sk = obt.sold_date_d_date_sk
)
AND channel = 'web'
GROUP BY
obt.sold_date_d_year,
obt.item_sk,
obt.bill_customer_sk
), cs AS (
SELECT
obt.sold_date_d_year AS cs_sold_year,
obt.item_sk,
obt.bill_customer_sk AS cs_customer_sk,
SUM(obt.quantity) AS cs_qty,
SUM(obt.wholesale_cost) AS cs_wc,
SUM(obt.sales_price) AS cs_sp
FROM tpcds_sales_returns_obt AS obt
WHERE
(
(
obt.sale_id IS NULL
AND (
obt.sale_id = obt.sale_id AND obt.item_sk = obt.item_sk
)
)
AND obt.sold_date_sk = obt.sold_date_d_date_sk
)
AND channel = 'catalog'
GROUP BY
obt.sold_date_d_year,
obt.item_sk,
obt.bill_customer_sk
), ss AS (
SELECT
obt.sold_date_d_year AS ss_sold_year,
obt.item_sk,
obt.ship_customer_sk,
SUM(obt.quantity) AS ss_qty,
SUM(obt.wholesale_cost) AS ss_wc,
SUM(obt.sales_price) AS ss_sp
FROM tpcds_sales_returns_obt AS obt
WHERE
(
(
obt.sale_id IS NULL
AND (
obt.sale_id = obt.sale_id AND obt.item_sk = obt.item_sk
)
)
AND obt.sold_date_sk = obt.sold_date_d_date_sk
)
AND channel = 'store'
GROUP BY
obt.sold_date_d_year,
obt.item_sk,
obt.ship_customer_sk
)
SELECT
ss_sold_year,
ROUND(
CAST(ss_qty AS DOUBLE PRECISION) / (
COALESCE(ws_qty, 0) + COALESCE(cs_qty, 0)
),
2
) AS ratio,
ss_qty AS store_qty,
ss_wc AS store_wholesale_cost,
ss_sp AS store_sales_price,
COALESCE(ws_qty, 0) + COALESCE(cs_qty, 0) AS other_chan_qty,
COALESCE(ws_wc, 0) + COALESCE(cs_wc, 0) AS other_chan_wholesale_cost,
COALESCE(ws_sp, 0) + COALESCE(cs_sp, 0) AS other_chan_sales_price
FROM ss
LEFT JOIN ws
ON (
ws_sold_year = ss_sold_year
AND ws.item_sk = ss.item_sk
AND ws_customer_sk = ship_customer_sk
)
LEFT JOIN cs
ON (
cs_sold_year = ss_sold_year
AND ss.item_sk = cs.item_sk
AND cs_customer_sk = ship_customer_sk
)
WHERE
(
(
(
COALESCE(ws_qty, 0) > 0 OR COALESCE(cs_qty, 0) > 0
) AND ss_sold_year = 1998
)
AND (
ws_sold_year = ss_sold_year
AND ws.item_sk = ss.item_sk
AND ws_customer_sk = ship_customer_sk
)
)
AND (
cs_sold_year = ss_sold_year
AND ss.item_sk = cs.item_sk
AND cs_customer_sk = ship_customer_sk
)
ORDER BY
ss_sold_year,
ss_qty DESC,
ss_wc DESC,
ss_sp DESC,
other_chan_qty,
other_chan_wholesale_cost,
other_chan_sales_price,
ratio
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['78'])

Source

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