A função analítica CUME_DIST() calcula a posição relativa de um valor relativo em um grupo de valores. O valor retornado pela CUME_DIST() é > 0 e <= 1, que representa a porcentagem do número de linhas com valor inferior (por ordem ascendente) ou igual a linha atual.
Por exemplo, considere os dados abaixo:
Ano Mês Quantidade 2010 1 5000.00 2010 2 6000.00 2010 3 7000.00 2010 4 2000.00 2011 1 1000.00 2011 2 2000.00 2011 3 3000.00 2011 4 4000.00
SELECT [Ano], [Mês], [Quantidade],
CUME_DIST() OVER (ORDER BY [Quantidade]) CUME_DIST
FROM dbo.SalesData
ORDER BY [Quantidade]
Ano Mês Quantidade CUME_DIST 2011 1 1000.00 0.125 2011 2 2000.00 0.375 2010 4 2000.00 0.375 2011 3 3000.00 0.5 2011 4 4000.00 0.625 2010 1 5000.00 0.75 2010 2 6000.00 0.875 2010 3 7000.00 1
SELECT [Ano], [Mês], [Quantidade],
CUME_DIST() OVER (PARTITION BY [Ano] ORDER BY [Quantidade])
CUME_DIST
FROM dbo.SalesData
ORDER BY [Ano], [Mês], [Quantidade]
Ano Mês Quantidade CUME_DIST 2010 1 5000.00 0.5 2010 2 6000.00 0.75 2010 3 7000.00 1 2010 4 2000.00 0.25 2011 1 1000.00 0.25 2011 2 2000.00 0.5 2011 3 3000.00 0.75 2011 4 4000.00 1
Autor/Fonte: SQL & Me
Comente e interaja!