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);

Pasted image 20241122125054.png

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