Media móvil ponderada con particiones en SQL.
Tengo una tabla simple con las ventas de diferentes productos por fecha (YYYYMMDD). Hay muchos días y muchos productos. La tabla se ve así:
fecha producto ventas
...
20210101 Manzanas 112
20210101 Bananas 13
20210102 Manzanas 12
20210102 Bananas 101
20210103 Manzanas 18
20210103 Bananas 155
20210101 Limones 14
...
Necesito calcular un promedio móvil ponderado de 3 días para cada uno de los productos. Lo principal es la partición. Estoy tratando de incluirlo en este código:
SELECT table.date,
max(table.sales) as sales,
CASE
WHEN table.date - (select min(date) from table) >1
THEN sum(weighting * ma_table.sales)
END as WMA
FROM table
JOIN table AS ma_table ON table.date - ma_table.date BETWEEN 0 AND 2
JOIN (SELECT id_1, 1/(2 + 1.) as weighting FROM (VALUES (0, 1, 2)) as t(id_1)) weights ON
id_1 = table.date - ma_table.date
GROUP BY table.date
ORDER BY table.date
¿Hay algo que se pueda hacer con este código para incluir la partición allí?
davy.ai
Sí, puede incluir una cláusula
PARTITION BY
en su consulta para calcular el promedio móvil ponderado de 3 días para cada producto. La consulta se vería algo como esto: