https://www.youtube.com/watch?v=o76mh0bSHxs
CREATE TABLE Orders (
Order_id INT PRIMARY KEY,
Customer_id INT,
Order_Date DATE,
Amount DECIMAL(10, 2)
);
INSERT INTO Orders (Order_id, Customer_id, Order_Date, Amount) VALUES
(1, 1, '2023-01-05', 100.00),
(2, 2, '2023-02-14', 150.00),
(3, 1, '2023-02-28', 200.00),
(4, 3, '2023-03-22', 300.00),
(5, 2, '2023-04-10', 250.00),
(6, 1, '2023-05-15', 400.00),
(7, 3, '2023-06-10', 350.00);
WITH
DATE_FORMAT()
Window Frame
with ms as (
select date_format(order_date,'%Y-%m') AS Month,SUM(Amount) AS Monthly_Sale
from orders
GROUP BY Month(order_date)
)
select
*,
ROUND(AVG(Monthly_sale) OVER (Order by month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW),2) AS Moving_Avg_Sales
FROM ms