Solutions: 1. SELECT Sale_ID, SKU_Code, Gross_Amount, LAG(Gross_Amount) OVER (PARTITION BY SKU_Code ORDER BY Date) AS Previous_Amount FROM Sales_Transactions; 2. WITH DailySales AS ( SELECT Date, SUM(Gross_Amount) AS Daily_Sales FROM Sales_Transactions GROUP BY Date ) SELECT Date, Daily_Sales, AVG(Daily_Sales) OVER (ORDER BY Date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS Moving_Avg_3day FROM DailySales; 3. SELECT Customer_ID, Date AS Current_Sale_Date, LEAD(Date) OVER (PARTITION BY Customer_ID ORDER BY Date) AS Next_Sale_Date FROM Sales_Transactions; 4. SELECT p.Category, s.Date, SUM(s.Gross_Amount) AS Daily_Sales, SUM(SUM(s.Gross_Amount)) OVER (PARTITION BY p.Category ORDER BY s.Date) AS Running_Total FROM Sales_Transactions s JOIN Products p ON s.SKU_Code = p.SKU_Code GROUP BY p.Category, s.Date; 5. WITH SaleChanges AS ( SELECT Sale_ID, Gross_Amount AS Current_Amount, LAG(Gross_Amount) OVER (PARTITION BY SKU_Code ORDER BY Date) AS Previous_Amount FROM Sales_Transactions ) SELECT Sale_ID, Current_Amount, Previous_Amount, ((Current_Amount - Previous_Amount) / Previous_Amount) * 100 AS Pct_Increase FROM SaleChanges WHERE ((Current_Amount - Previous_Amount) / Previous_Amount) > 0.5; 6. SELECT Operation_ID, SKU_Code, Quantity, SUM(CASE WHEN Operation_Type = 'Inbound' THEN Quantity WHEN Operation_Type = 'Outbound' THEN -Quantity ELSE 0 END) OVER (PARTITION BY SKU_Code ORDER BY Operation_ID) AS Running_Inventory FROM Warehouse_Ops; 7. WITH MonthlySales AS ( SELECT EXTRACT(MONTH FROM Date) AS Month, SUM(Gross_Amount) AS Monthly_Sales, LAG(SUM(Gross_Amount)) OVER (ORDER BY EXTRACT(MONTH FROM Date)) AS Previous_Month_Sales FROM Sales_Transactions GROUP BY EXTRACT(MONTH FROM Date) ) SELECT Month, Monthly_Sales, Previous_Month_Sales, (Monthly_Sales - Previous_Month_Sales) AS Sales_Difference FROM MonthlySales; 8. WITH WeeklySales AS ( SELECT SKU_Code, EXTRACT(WEEK FROM Date) AS Week, SUM(Gross_Amount) AS Weekly_Sales FROM Sales_Transactions GROUP BY SKU_Code, EXTRACT(WEEK FROM Date) ) SELECT SKU_Code, VARIANCE(Weekly_Sales) AS Weekly_Sales_Variance FROM WeeklySales GROUP BY SKU_Code ORDER BY Weekly_Sales_Variance; 9. WITH DailyQuantities AS ( SELECT Date, SUM(Quantity) AS Daily_Quantity FROM Sales_Transactions GROUP BY Date ) SELECT Date, Daily_Quantity, SUM(Daily_Quantity) OVER (ORDER BY Date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS Rolling_Sum_7day FROM DailyQuantities; 10. WITH CustomerGaps AS ( SELECT Customer_ID, Date, DATEDIFF(Date, LAG(Date) OVER (PARTITION BY Customer_ID ORDER BY Date)) AS Days_Between_Purchases FROM Sales_Transactions ) SELECT Customer_ID, MAX(Days_Between_Purchases) AS Max_Days_Between_Purchases FROM CustomerGaps GROUP BY Customer_ID; 11. WITH ProductIntervals AS ( SELECT SKU_Code, Date, DATEDIFF(Date, LAG(Date) OVER (PARTITION BY SKU_Code ORDER BY Date)) AS Days_Between_Sales FROM Sales_Transactions ) SELECT SKU_Code, AVG(Days_Between_Sales) AS Avg_Days_Between_Sales FROM ProductIntervals GROUP BY SKU_Code; 12. WITH DailyTotals AS ( SELECT Date, SUM(Gross_Amount) AS Daily_Sales, LAG(SUM(Gross_Amount)) OVER (ORDER BY Date) AS Previous_Day_Sales FROM Sales_Transactions GROUP BY Date ) SELECT Date, Daily_Sales, ((Daily_Sales - Previous_Day_Sales) / Previous_Day_Sales) * 100 AS Pct_Change_From_Previous_Day FROM DailyTotals; 13. WITH MonthlyProductSales AS ( SELECT SKU_Code, EXTRACT(MONTH FROM Date) AS Month, SUM(Gross_Amount) AS Monthly_Sales FROM Sales_Transactions GROUP BY SKU_Code, EXTRACT(MONTH FROM Date) ), ConsecutiveGrowth AS ( SELECT SKU_Code, Month, Monthly_Sales, LEAD(Monthly_Sales, 1) OVER (PARTITION BY SKU_Code ORDER BY Month) AS Next_Month_Sales, LEAD(Monthly_Sales, 2) OVER (PARTITION BY SKU_Code ORDER BY Month) AS Next_2Month_Sales FROM MonthlyProductSales ) SELECT SKU_Code, Monthly_Sales AS Month1_Sales, Next_Month_Sales AS Month2_Sales, Next_2Month_Sales AS Month3_Sales FROM ConsecutiveGrowth WHERE Monthly_Sales < Next_Month_Sales AND Next_Month_Sales < Next_2Month_Sales; 14. WITH DailySales AS ( SELECT Date, SUM(Gross_Amount) AS Daily_Sales FROM Sales_Transactions GROUP BY Date ), EMACalc AS ( SELECT Date, Daily_Sales, Daily_Sales AS EMA_03 -- Initial value FROM DailySales WHERE Date = (SELECT MIN(Date) FROM DailySales) UNION ALL SELECT d.Date, d.Daily_Sales, 0.3 * d.Daily_Sales + 0.7 * e.EMA_03 AS EMA_03 FROM DailySales d JOIN EMACalc e ON d.Date = DATE_ADD(e.Date, 1) ) SELECT * FROM EMACalc; 15. WITH DailyCategorySales AS ( SELECT p.Category, DAYOFWEEK(s.Date) AS DayOfWeek, AVG(s.Gross_Amount) AS Avg_Sales FROM Sales_Transactions s JOIN Products p ON s.SKU_Code = p.SKU_Code GROUP BY p.Category, DAYOFWEEK(s.Date) ), RankedDays AS ( SELECT Category, DayOfWeek, Avg_Sales, RANK() OVER (PARTITION BY Category ORDER BY Avg_Sales DESC) AS Day_Rank FROM DailyCategorySales ) SELECT Category, CASE DayOfWeek WHEN 1 THEN 'Sunday' WHEN 2 THEN 'Monday' WHEN 3 THEN 'Tuesday' WHEN 4 THEN 'Wednesday' WHEN 5 THEN 'Thursday' WHEN 6 THEN 'Friday' WHEN 7 THEN 'Saturday' END AS Best_Day, Avg_Sales AS Avg_Sales_On_Best_Day FROM RankedDays WHERE Day_Rank = 1;