80 lines
2.5 KiB
SQL
80 lines
2.5 KiB
SQL
WITH wscs AS
|
|
(SELECT sold_date_sk,
|
|
sales_price
|
|
FROM
|
|
(SELECT ws_sold_date_sk sold_date_sk,
|
|
ws_ext_sales_price sales_price
|
|
FROM web_sales
|
|
UNION ALL SELECT cs_sold_date_sk sold_date_sk,
|
|
cs_ext_sales_price sales_price
|
|
FROM catalog_sales) sq1),
|
|
wswscs AS
|
|
(SELECT d_week_seq,
|
|
sum(CASE
|
|
WHEN (d_day_name='Sunday') THEN sales_price
|
|
ELSE NULL
|
|
END) sun_sales,
|
|
sum(CASE
|
|
WHEN (d_day_name='Monday') THEN sales_price
|
|
ELSE NULL
|
|
END) mon_sales,
|
|
sum(CASE
|
|
WHEN (d_day_name='Tuesday') THEN sales_price
|
|
ELSE NULL
|
|
END) tue_sales,
|
|
sum(CASE
|
|
WHEN (d_day_name='Wednesday') THEN sales_price
|
|
ELSE NULL
|
|
END) wed_sales,
|
|
sum(CASE
|
|
WHEN (d_day_name='Thursday') THEN sales_price
|
|
ELSE NULL
|
|
END) thu_sales,
|
|
sum(CASE
|
|
WHEN (d_day_name='Friday') THEN sales_price
|
|
ELSE NULL
|
|
END) fri_sales,
|
|
sum(CASE
|
|
WHEN (d_day_name='Saturday') THEN sales_price
|
|
ELSE NULL
|
|
END) sat_sales
|
|
FROM wscs,
|
|
date_dim
|
|
WHERE d_date_sk = sold_date_sk
|
|
GROUP BY d_week_seq)
|
|
SELECT d_week_seq1,
|
|
round(sun_sales1/sun_sales2, 2) r1,
|
|
round(mon_sales1/mon_sales2, 2) r2,
|
|
round(tue_sales1/tue_sales2, 2) r3,
|
|
round(wed_sales1/wed_sales2, 2) r4,
|
|
round(thu_sales1/thu_sales2, 2) r5,
|
|
round(fri_sales1/fri_sales2, 2) r6,
|
|
round(sat_sales1/sat_sales2, 2)
|
|
FROM
|
|
(SELECT wswscs.d_week_seq d_week_seq1,
|
|
sun_sales sun_sales1,
|
|
mon_sales mon_sales1,
|
|
tue_sales tue_sales1,
|
|
wed_sales wed_sales1,
|
|
thu_sales thu_sales1,
|
|
fri_sales fri_sales1,
|
|
sat_sales sat_sales1
|
|
FROM wswscs,
|
|
date_dim
|
|
WHERE date_dim.d_week_seq = wswscs.d_week_seq
|
|
AND d_year = 2001) y,
|
|
(SELECT wswscs.d_week_seq d_week_seq2,
|
|
sun_sales sun_sales2,
|
|
mon_sales mon_sales2,
|
|
tue_sales tue_sales2,
|
|
wed_sales wed_sales2,
|
|
thu_sales thu_sales2,
|
|
fri_sales fri_sales2,
|
|
sat_sales sat_sales2
|
|
FROM wswscs,
|
|
date_dim
|
|
WHERE date_dim.d_week_seq = wswscs.d_week_seq
|
|
AND d_year = 2001+1) z
|
|
WHERE d_week_seq1 = d_week_seq2-53
|
|
ORDER BY d_week_seq1 NULLS FIRST;
|