q31.sql 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. WITH ss AS
  2. (SELECT
  3. ca_county,
  4. d_qoy,
  5. d_year,
  6. sum(ss_ext_sales_price) AS store_sales
  7. FROM store_sales, date_dim, customer_address
  8. WHERE ss_sold_date_sk = d_date_sk
  9. AND ss_addr_sk = ca_address_sk
  10. GROUP BY ca_county, d_qoy, d_year),
  11. ws AS
  12. (SELECT
  13. ca_county,
  14. d_qoy,
  15. d_year,
  16. sum(ws_ext_sales_price) AS web_sales
  17. FROM web_sales, date_dim, customer_address
  18. WHERE ws_sold_date_sk = d_date_sk
  19. AND ws_bill_addr_sk = ca_address_sk
  20. GROUP BY ca_county, d_qoy, d_year)
  21. SELECT
  22. ss1.ca_county,
  23. ss1.d_year,
  24. ws2.web_sales / ws1.web_sales web_q1_q2_increase,
  25. ss2.store_sales / ss1.store_sales store_q1_q2_increase,
  26. ws3.web_sales / ws2.web_sales web_q2_q3_increase,
  27. ss3.store_sales / ss2.store_sales store_q2_q3_increase
  28. FROM
  29. ss ss1, ss ss2, ss ss3, ws ws1, ws ws2, ws ws3
  30. WHERE
  31. ss1.d_qoy = 1
  32. AND ss1.d_year = 2000
  33. AND ss1.ca_county = ss2.ca_county
  34. AND ss2.d_qoy = 2
  35. AND ss2.d_year = 2000
  36. AND ss2.ca_county = ss3.ca_county
  37. AND ss3.d_qoy = 3
  38. AND ss3.d_year = 2000
  39. AND ss1.ca_county = ws1.ca_county
  40. AND ws1.d_qoy = 1
  41. AND ws1.d_year = 2000
  42. AND ws1.ca_county = ws2.ca_county
  43. AND ws2.d_qoy = 2
  44. AND ws2.d_year = 2000
  45. AND ws1.ca_county = ws3.ca_county
  46. AND ws3.d_qoy = 3
  47. AND ws3.d_year = 2000
  48. AND CASE WHEN ws1.web_sales > 0
  49. THEN ws2.web_sales / ws1.web_sales
  50. ELSE NULL END
  51. > CASE WHEN ss1.store_sales > 0
  52. THEN ss2.store_sales / ss1.store_sales
  53. ELSE NULL END
  54. AND CASE WHEN ws2.web_sales > 0
  55. THEN ws3.web_sales / ws2.web_sales
  56. ELSE NULL END
  57. > CASE WHEN ss2.store_sales > 0
  58. THEN ss3.store_sales / ss2.store_sales
  59. ELSE NULL END
  60. ORDER BY ss1.ca_county