q58.sql 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. WITH ss_items AS
  2. (SELECT
  3. i_item_id item_id,
  4. sum(ss_ext_sales_price) ss_item_rev
  5. FROM store_sales, item, date_dim
  6. WHERE ss_item_sk = i_item_sk
  7. AND d_date IN (SELECT d_date
  8. FROM date_dim
  9. WHERE d_week_seq = (SELECT d_week_seq
  10. FROM date_dim
  11. WHERE d_date = '2000-01-03'))
  12. AND ss_sold_date_sk = d_date_sk
  13. GROUP BY i_item_id),
  14. cs_items AS
  15. (SELECT
  16. i_item_id item_id,
  17. sum(cs_ext_sales_price) cs_item_rev
  18. FROM catalog_sales, item, date_dim
  19. WHERE cs_item_sk = i_item_sk
  20. AND d_date IN (SELECT d_date
  21. FROM date_dim
  22. WHERE d_week_seq = (SELECT d_week_seq
  23. FROM date_dim
  24. WHERE d_date = '2000-01-03'))
  25. AND cs_sold_date_sk = d_date_sk
  26. GROUP BY i_item_id),
  27. ws_items AS
  28. (SELECT
  29. i_item_id item_id,
  30. sum(ws_ext_sales_price) ws_item_rev
  31. FROM web_sales, item, date_dim
  32. WHERE ws_item_sk = i_item_sk
  33. AND d_date IN (SELECT d_date
  34. FROM date_dim
  35. WHERE d_week_seq = (SELECT d_week_seq
  36. FROM date_dim
  37. WHERE d_date = '2000-01-03'))
  38. AND ws_sold_date_sk = d_date_sk
  39. GROUP BY i_item_id)
  40. SELECT
  41. ss_items.item_id,
  42. ss_item_rev,
  43. ss_item_rev / (ss_item_rev + cs_item_rev + ws_item_rev) / 3 * 100 ss_dev,
  44. cs_item_rev,
  45. cs_item_rev / (ss_item_rev + cs_item_rev + ws_item_rev) / 3 * 100 cs_dev,
  46. ws_item_rev,
  47. ws_item_rev / (ss_item_rev + cs_item_rev + ws_item_rev) / 3 * 100 ws_dev,
  48. (ss_item_rev + cs_item_rev + ws_item_rev) / 3 average
  49. FROM ss_items, cs_items, ws_items
  50. WHERE ss_items.item_id = cs_items.item_id
  51. AND ss_items.item_id = ws_items.item_id
  52. AND ss_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev
  53. AND ss_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev
  54. AND cs_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev
  55. AND cs_item_rev BETWEEN 0.9 * ws_item_rev AND 1.1 * ws_item_rev
  56. AND ws_item_rev BETWEEN 0.9 * ss_item_rev AND 1.1 * ss_item_rev
  57. AND ws_item_rev BETWEEN 0.9 * cs_item_rev AND 1.1 * cs_item_rev
  58. ORDER BY item_id, ss_item_rev
  59. LIMIT 100