SQLite DENSE_RANK

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 BYcláusula divide o conjunto de resultados em partições às quais a função se aplica. Se você omitir a PARTITION BYcláusula, a função tratará todo o conjunto de resultados como uma única partição.
  • Especifica ORDER BYa 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 DenseRankDemopara demonstração:

CREATE TABLE DenseRankDemo (
	Val TEXT
);
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, insira os dados na DenseRankDemotabela:

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:

Exemplo de função SQLite DENSE_RANK

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:

Função SQLite DENSE_RANK com exemplo de cláusula PARTITION BY

Neste exemplo:

  • Primeiro, a PARTITION BYcláusula distribuiu as faixas em álbuns.
  • Em seguida, a ORDER BYclá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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *