Mostrando postagens com marcador Classificação. Mostrar todas as postagens
Mostrando postagens com marcador Classificação. Mostrar todas as postagens

sexta-feira, 29 de julho de 2016

Funções De Classificação - SQL Server

As funções de classificação retornam um valor de classificação para cada linha em uma partição. Dependendo da função usada, algumas linhas podem receber o mesmo valor que outras. As funções de classificação são não determinísticas.

O transact-SQL fornece as seguintes funções de classificação:

RANK

Retorna a classificação de cada linha na partição de um conjunto de resultados. A classificação de uma linha é um mais o número de classificações que vêm antes da linha em questão.

SELECT
P.ID_Produto,P.ID_Categoria,P.Quantidade, 
RANK() OVER(PARTITION BY P.ID_Categoria ORDER BY P.Quantidade DESCAS 'RANKING'
FROM
            Produtos.ProdutosInventario P
ORDER BY
            'RANKING'

*
Se duas ou mais linhas empatarem em uma classificação, cada linha empatada receberá a mesma classificação. Por exemplo, se os dois melhores vendedores tiverem o mesmo valor de SalesYTD, os dois serão classificados com o número um. O vendedor com o próximo SalesYTD maior será classificado com o número três, pois há duas linhas com classificação mais alta. Portanto, a função RANK nem sempre retorna inteiros consecutivos.

ROW_NUMBER

Este retorna o número sequencial de uma linha em uma instrução executado no conjunto de resultados, iniciando em 1 para a primeira linha de cada partição.

Observação que fique explicito o numero da linha, não tem relação com ID Da tabela em execução.

SELECT
           ROW_NUMBER OVER(ORDER BY ID_VENDA DESC) AS Row,
           Nome, SobreNome
FROM
           dbo.VENDAS

ROW Nome         SobreNome               
--- -----------  ---------------------- 
1   Linda        Mitchell               
2   Jae          Pak                    
3   Michael      Blythe                 
4   Jillian      Carson                 
5   Ranjit       Varkey Chudukatil      


Outras funções de classificação não muito comum, para complementar os estudos rs ..

sexta-feira, 8 de abril de 2016

Funções De Classificaçao - SQL SERVER

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.

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.

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.

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.
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: