q59.sql 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. WITH wss AS
  2. (SELECT
  3. d_week_seq,
  4. ss_store_sk,
  5. sum(CASE WHEN (d_day_name = 'Sunday')
  6. THEN ss_sales_price
  7. ELSE NULL END) sun_sales,
  8. sum(CASE WHEN (d_day_name = 'Monday')
  9. THEN ss_sales_price
  10. ELSE NULL END) mon_sales,
  11. sum(CASE WHEN (d_day_name = 'Tuesday')
  12. THEN ss_sales_price
  13. ELSE NULL END) tue_sales,
  14. sum(CASE WHEN (d_day_name = 'Wednesday')
  15. THEN ss_sales_price
  16. ELSE NULL END) wed_sales,
  17. sum(CASE WHEN (d_day_name = 'Thursday')
  18. THEN ss_sales_price
  19. ELSE NULL END) thu_sales,
  20. sum(CASE WHEN (d_day_name = 'Friday')
  21. THEN ss_sales_price
  22. ELSE NULL END) fri_sales,
  23. sum(CASE WHEN (d_day_name = 'Saturday')
  24. THEN ss_sales_price
  25. ELSE NULL END) sat_sales
  26. FROM store_sales, date_dim
  27. WHERE d_date_sk = ss_sold_date_sk
  28. GROUP BY d_week_seq, ss_store_sk
  29. )
  30. SELECT
  31. s_store_name1,
  32. s_store_id1,
  33. d_week_seq1,
  34. sun_sales1 / sun_sales2,
  35. mon_sales1 / mon_sales2,
  36. tue_sales1 / tue_sales2,
  37. wed_sales1 / wed_sales2,
  38. thu_sales1 / thu_sales2,
  39. fri_sales1 / fri_sales2,
  40. sat_sales1 / sat_sales2
  41. FROM
  42. (SELECT
  43. s_store_name s_store_name1,
  44. wss.d_week_seq d_week_seq1,
  45. s_store_id s_store_id1,
  46. sun_sales sun_sales1,
  47. mon_sales mon_sales1,
  48. tue_sales tue_sales1,
  49. wed_sales wed_sales1,
  50. thu_sales thu_sales1,
  51. fri_sales fri_sales1,
  52. sat_sales sat_sales1
  53. FROM wss, store, date_dim d
  54. WHERE d.d_week_seq = wss.d_week_seq AND
  55. ss_store_sk = s_store_sk AND
  56. d_month_seq BETWEEN 1212 AND 1212 + 11) y,
  57. (SELECT
  58. s_store_name s_store_name2,
  59. wss.d_week_seq d_week_seq2,
  60. s_store_id s_store_id2,
  61. sun_sales sun_sales2,
  62. mon_sales mon_sales2,
  63. tue_sales tue_sales2,
  64. wed_sales wed_sales2,
  65. thu_sales thu_sales2,
  66. fri_sales fri_sales2,
  67. sat_sales sat_sales2
  68. FROM wss, store, date_dim d
  69. WHERE d.d_week_seq = wss.d_week_seq AND
  70. ss_store_sk = s_store_sk AND
  71. d_month_seq BETWEEN 1212 + 12 AND 1212 + 23) x
  72. WHERE s_store_id1 = s_store_id2
  73. AND d_week_seq1 = d_week_seq2 - 52
  74. ORDER BY s_store_name1, s_store_id1, d_week_seq1
  75. LIMIT 100