Classificação com as funções ROW_NUMBER, RANK, DENSE_RANK, NTILE
Já a partir do SQL Server 2005 possuímos quatro(4) funções de ranking/classificação. Estas funções fazem com que problemas “clássicos” de SQL fiquem muito mais fáceis de se solucionarem.
As funções de Ranking retornam um valor de classificação para cada linha em uma partição. Todas as funções de Ranking são do tipo não-determinísticas, ou seja, as funções não-determinísticas podem retornar resultados diferentes cada vez que são chamadas com um conjunto específico de valores de entrada, mesmo se o estado do banco de dados que elas acessam permaneça o mesmo.
ROW_NUMBER () OVER ([ <partition_by_clause>] <order_by_clause>)
Retorna o número seqüencial de uma linha dentro de uma partição de um conjunto de resultados, começando em 1 para a primeira linha em cada partição.
Retorna o número seqüencial de uma linha dentro de uma partição de um conjunto de resultados, começando em 1 para a primeira linha em cada partição.
RANK () OVER ([ <partition_by_clause>] <order_by_clause>) ([RANK () OVER <partition_by_clause>] <order_by_clause>)
Retorna (Rank) a posição de cada linha dentro da partição de um conjunto de resultados.
Retorna (Rank) a posição de cada linha dentro da partição de um conjunto de resultados.
DENSE_RANK () OVER ([ <partition_by_clause>] <order_by_clause>) ([DENSE_RANK () OVER <partition_by_clause>] <order_by_clause>)
Retorna (Rank) a posição de linhas dentro da partição de um conjunto de resultados, sem quaisquer lacunas no ranking.
Retorna (Rank) a posição de linhas dentro da partição de um conjunto de resultados, sem quaisquer lacunas no ranking.
NTILE (integer_expression) OVER ([ <partition_by_clause>] <order_by_clause>) NTILE integer_expression () OVER ([ <partition_by_clause>] <order_by_clause>)
Distribui as linhas de uma partição ordenada em um determinado número de grupos.
Distribui as linhas de uma partição ordenada em um determinado número de grupos.
Todas as definições acima e a sintaxe foram retiradas BOL.
O código abaixo explica o uso de todas as funções quatro juntos em uma consulta;
Exemplo pratico da query e seu resultado:
Nenhum comentário:
Postar um comentário