Advertisement
Smudla

IDAS2_CV7_SPOLECNE

Nov 25th, 2015
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 2.29 KB | None | 0 0
  1. SELECT * FROM sh.sales;
  2. SELECT * FROM sh.times;
  3. SELECT * FROM sh.customers;
  4. SELECT * FROM sh.products;
  5. SELECT * FROM sh.countries;
  6. SELECT * FROM sh.channels;
  7. SELECT * FROM sh.promotions;
  8. SELECT * FROM sh.costs;
  9.  
  10. CREATE OR REPLACE VIEW  cv7_cum_sum AS
  11. SELECT
  12. channel_desc,
  13. calendar_month_name, calendar_year, amount_sold,
  14. SUM(amount_sold) over
  15. (PARTITION BY calendar_year, channel_desc ORDER BY calendar_year, calendar_month_number rows unbounded preceding) cum_sum
  16. FROM
  17. (
  18. SELECT
  19. channel_desc, calendar_month_name, calendar_year, calendar_month_number,SUM(amount_sold) amount_sold
  20. FROM SH.sales
  21. join sh.times using(time_id)
  22. join sh.channels using(channel_id)
  23. WHERE
  24. calendar_year IN (2000,2001)
  25. GROUP BY
  26. channel_desc,
  27. calendar_month_name,
  28. calendar_year,
  29. calendar_month_number);
  30.  
  31. SELECT * FROM cv7_cum_sum;
  32.  
  33. CREATE OR REPLACE VIEW cv7_sales_avg_4_days AS
  34. SELECT
  35. channel_desc,
  36. time_id,
  37. SUM(amount_sold) total_sold,
  38. ROUND (AVG(SUM(amount_sold))over (PARTITION BY channel_desc ORDER BY
  39. time_id rows 3 preceding),2) AS prev_4_day_avg,
  40. MIN(SUM(amount_sold)) over (PARTITION BY channel_desc) min_per_channel,
  41. MAX(SUM(amount_sold)) over (PARTITION BY channel_desc) max_per_channel
  42. FROM
  43. sh.sales
  44. join sh.customers using(cust_id)
  45. join sh.countries using(country_id)
  46. join sh.times using (time_id)
  47. join sh.channels using(channel_id)
  48. join sh.promotions using(promo_id)
  49. join sh.products using (prod_id)
  50. WHERE
  51. prod_name = 'Mouse Pad'
  52. AND calendar_month_desc = '1999-01'
  53. AND country_name = 'United States of America'
  54. GROUP BY
  55. channel_desc,
  56. time_id;
  57.  
  58. SELECT * FROM cv7_sales_avg_4_days;
  59.  
  60. CREATE OR REPLACE VIEW cv7_sales_3_day_window AS
  61. SELECT
  62. time_id,
  63. SUM(quantity_sold) total_quantity,
  64. SUM(amount_sold) total_amount,
  65. ROUND(AVG(SUM(quantity_sold))
  66. over
  67. (
  68. ORDER BY time_id RANGE BETWEEN INTERVAL '1' DAY preceding AND INTERVAL '1' DAY following)
  69. ,2) qty_3day_avg,
  70. ROUND(AVG(SUM(amount_sold))
  71. over
  72. (
  73. ORDER BY time_id RANGE BETWEEN INTERVAL '1' DAY preceding AND INTERVAL '1' DAY following),2) amount_3day_avg
  74. FROM
  75. sh.sales
  76. join sh.customers using(cust_id)
  77. join sh.countries using(country_id)
  78. join sh.times using(time_id)
  79. WHERE
  80. country_name = 'France'
  81. AND (calendar_month_desc='1992-12'
  82. OR calendar_month_desc = '2000-01')
  83. GROUP BY time_id;
  84.  
  85. SELECT * FROM cv7_sales_3_day_window;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement