Files
email-tracker/external/duckdb/extension/tpcds/dsdgen/queries/23.sql
2025-10-24 19:21:19 -05:00

85 lines
2.4 KiB
SQL

WITH frequent_ss_items AS
(SELECT itemdesc,
i_item_sk item_sk,
d_date solddate,
count(*) cnt
FROM store_sales,
date_dim,
(SELECT SUBSTRING(i_item_desc, 1, 30) itemdesc,
*
FROM item) sq1
WHERE ss_sold_date_sk = d_date_sk
AND ss_item_sk = i_item_sk
AND d_year IN (2000,
2000+1,
2000+2,
2000+3)
GROUP BY itemdesc,
i_item_sk,
d_date
HAVING count(*) >4),
max_store_sales AS
(SELECT max(csales) tpcds_cmax
FROM
(SELECT c_customer_sk,
sum(ss_quantity*ss_sales_price) csales
FROM store_sales,
customer,
date_dim
WHERE ss_customer_sk = c_customer_sk
AND ss_sold_date_sk = d_date_sk
AND d_year IN (2000,
2000+1,
2000+2,
2000+3)
GROUP BY c_customer_sk) sq2),
best_ss_customer AS
(SELECT c_customer_sk,
sum(ss_quantity*ss_sales_price) ssales
FROM store_sales,
customer,
max_store_sales
WHERE ss_customer_sk = c_customer_sk
GROUP BY c_customer_sk
HAVING sum(ss_quantity*ss_sales_price) > (50/100.0) * max(tpcds_cmax))
SELECT c_last_name,
c_first_name,
sales
FROM
(SELECT c_last_name,
c_first_name,
sum(cs_quantity*cs_list_price) sales
FROM catalog_sales,
customer,
date_dim,
frequent_ss_items,
best_ss_customer
WHERE d_year = 2000
AND d_moy = 2
AND cs_sold_date_sk = d_date_sk
AND cs_item_sk = item_sk
AND cs_bill_customer_sk = best_ss_customer.c_customer_sk
AND cs_bill_customer_sk = customer.c_customer_sk
GROUP BY c_last_name,
c_first_name
UNION ALL SELECT c_last_name,
c_first_name,
sum(ws_quantity*ws_list_price) sales
FROM web_sales,
customer,
date_dim,
frequent_ss_items,
best_ss_customer
WHERE d_year = 2000
AND d_moy = 2
AND ws_sold_date_sk = d_date_sk
AND ws_item_sk = item_sk
AND ws_bill_customer_sk = best_ss_customer.c_customer_sk
AND ws_bill_customer_sk = customer.c_customer_sk
GROUP BY c_last_name,
c_first_name) sq3
ORDER BY c_last_name NULLS FIRST,
c_first_name NULLS FIRST,
sales NULLS FIRST
LIMIT 100;