Recursão, ranking, frames e percentis com precisão.
WITH Hier(Id, PaiId, Nvl) AS (
SELECT Id, PaiId, 0 FROM dbo.Categorias WHERE PaiId IS NULL
UNION ALL
SELECT f.Id, f.PaiId, p.Nvl+1 FROM dbo.Categorias f JOIN Hier p ON p.Id=f.PaiId
)
SELECT * FROM Hier;
SELECT *, ROW_NUMBER() OVER (PARTITION BY Categoria ORDER BY Data DESC) AS rn
FROM dbo.Pedidos;
SUM(Valor) OVER (PARTITION BY Cat ORDER BY Data
ROWS BETWEEN 3 PRECEDING AND CURRENT ROW);
LAST_VALUE(Valor) OVER (PARTITION BY Cat ORDER BY Data
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING);
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY Valor)
OVER (PARTITION BY Categoria);
-- Calcular média móvel 7 dias e ranking por categoria.
DENSE_RANK() OVER (PARTITION BY Cat ORDER BY Valor DESC);