q2.sql 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. WITH wscs AS
  2. ( SELECT
  3. sold_date_sk,
  4. sales_price
  5. FROM (SELECT
  6. ws_sold_date_sk sold_date_sk,
  7. ws_ext_sales_price sales_price
  8. FROM web_sales) x
  9. UNION ALL
  10. (SELECT
  11. cs_sold_date_sk sold_date_sk,
  12. cs_ext_sales_price sales_price
  13. FROM catalog_sales)),
  14. wswscs AS
  15. ( SELECT
  16. d_week_seq,
  17. sum(CASE WHEN (d_day_name = 'Sunday')
  18. THEN sales_price
  19. ELSE NULL END)
  20. sun_sales,
  21. sum(CASE WHEN (d_day_name = 'Monday')
  22. THEN sales_price
  23. ELSE NULL END)
  24. mon_sales,
  25. sum(CASE WHEN (d_day_name = 'Tuesday')
  26. THEN sales_price
  27. ELSE NULL END)
  28. tue_sales,
  29. sum(CASE WHEN (d_day_name = 'Wednesday')
  30. THEN sales_price
  31. ELSE NULL END)
  32. wed_sales,
  33. sum(CASE WHEN (d_day_name = 'Thursday')
  34. THEN sales_price
  35. ELSE NULL END)
  36. thu_sales,
  37. sum(CASE WHEN (d_day_name = 'Friday')
  38. THEN sales_price
  39. ELSE NULL END)
  40. fri_sales,
  41. sum(CASE WHEN (d_day_name = 'Saturday')
  42. THEN sales_price
  43. ELSE NULL END)
  44. sat_sales
  45. FROM wscs, date_dim
  46. WHERE d_date_sk = sold_date_sk
  47. GROUP BY d_week_seq)
  48. SELECT
  49. d_week_seq1,
  50. round(sun_sales1 / sun_sales2, 2),
  51. round(mon_sales1 / mon_sales2, 2),
  52. round(tue_sales1 / tue_sales2, 2),
  53. round(wed_sales1 / wed_sales2, 2),
  54. round(thu_sales1 / thu_sales2, 2),
  55. round(fri_sales1 / fri_sales2, 2),
  56. round(sat_sales1 / sat_sales2, 2)
  57. FROM
  58. (SELECT
  59. wswscs.d_week_seq d_week_seq1,
  60. sun_sales sun_sales1,
  61. mon_sales mon_sales1,
  62. tue_sales tue_sales1,
  63. wed_sales wed_sales1,
  64. thu_sales thu_sales1,
  65. fri_sales fri_sales1,
  66. sat_sales sat_sales1
  67. FROM wswscs, date_dim
  68. WHERE date_dim.d_week_seq = wswscs.d_week_seq AND d_year = 2001) y,
  69. (SELECT
  70. wswscs.d_week_seq d_week_seq2,
  71. sun_sales sun_sales2,
  72. mon_sales mon_sales2,
  73. tue_sales tue_sales2,
  74. wed_sales wed_sales2,
  75. thu_sales thu_sales2,
  76. fri_sales fri_sales2,
  77. sat_sales sat_sales2
  78. FROM wswscs, date_dim
  79. WHERE date_dim.d_week_seq = wswscs.d_week_seq AND d_year = 2001 + 1) z
  80. WHERE d_week_seq1 = d_week_seq2 - 53
  81. ORDER BY d_week_seq1