Resumo : neste tutorial, você aprenderá como usar a DENSE_RANK()
função SQLite para calcular a classificação de uma linha em um conjunto ordenado de linhas.
Introdução à DENSE_RANK()
função SQLite
A DENSE_RANK()
é uma função de janela que calcula a classificação de uma linha em um conjunto ordenado de linhas e retorna a classificação como um número inteiro. As classificações são números inteiros consecutivos começando em 1. Linhas com valores iguais recebem a mesma classificação. E os valores de classificação não são ignorados em caso de empate.
Aqui está a sintaxe da DENSE_RANK()
função:
DENSE_RANK() OVER (
PARTITION BY expression1, expression2,...
ORDER BY expression1 [ASC | DESC], expression2,..
)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
- A
PARTITION BY
cláusula divide o conjunto de resultados em partições às quais a função se aplica. Se você omitir aPARTITION BY
cláusula, a função tratará todo o conjunto de resultados como uma única partição. - Especifica
ORDER BY
a ordem das linhas em cada partição à qual a função se aplica. - A
DENSE_RANK()
função se aplica a cada partição separadamente e recalcula a classificação de cada partição.
A DENSE_RANK()
função é útil caso você queira criar relatórios N principais e N inferiores.
DENSE_RANK()
Exemplos de funções SQLite
Vejamos alguns exemplos de uso da DENSE_RANK()
função para entendê-la melhor.
Usando SQLite DENSE_RANK()
no exemplo do conjunto de resultados
Primeiro, crie uma nova tabela chamada DenseRankDemo
para demonstração:
CREATE TABLE DenseRankDemo (
Val TEXT
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, insira os dados na DenseRankDemo
tabela:
INSERT INTO DenseRankDemo(Val)
VALUES('A'),('B'),('C'),('C'),('D'),('D'),('E');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, use a DENSE_RANK()
função para calcular uma classificação para cada linha:
SELECT
Val,
DENSE_RANK () OVER (
ORDER BY Val )
ValRank
FROM
DenseRankDemo;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Aqui está a saída:
Como você pode ver claramente na saída:
- Linhas com o mesmo valor recebem a mesma classificação.
- Não há lacunas nos valores de classificação.
Usando SQLite DENSE_RANK()
no exemplo de partição
A instrução a seguir usa a DENSE_RANK()
função para calcular a classificação de cada faixa em cada álbum com base na duração da faixa:
SELECT
AlbumId,
Name,
Milliseconds,
DENSE_RANK () OVER (
PARTITION BY AlbumId
ORDER BY Milliseconds
) LengthRank
FROM
tracks;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A imagem a seguir mostra a saída parcial:
Neste exemplo:
- Primeiro, a
PARTITION BY
cláusula distribuiu as faixas em álbuns. - Em seguida, a
ORDER BY
cláusula classificou as faixas de cada álbum por sua duração. - Finalmente, a
DENSE_RANK()
função aplicada a cada partição separadamente para calcular a classificação da trilha na partição.
Neste tutorial, você aprendeu como usar a DENSE_RANK()
função SQLite para calcular a classificação de uma linha em um conjunto ordenado de linhas.