SQLite NTILE

Resumo : neste tutorial, você aprenderá como usar a NTILE()função SQLite para dividir um conjunto de resultados em vários intervalos e atribuir um número de intervalo a cada linha.

Introdução à NTILE()função SQLite

A função SQLite NTILE()é uma função de janela que divide um conjunto de resultados ordenado em vários intervalos por uma expressão especificada e atribui um número de intervalo apropriado a cada linha.

O seguinte mostra a sintaxe da NTILE()função:

NTILE(expression) OVER ( 
	PARTITION BY expression1, expression2,...
	ORDER BY expression1 [ASC | DESC]expression2,
)
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

expression

O expressionpode ser um número inteiro positivo literal ou qualquer expressão válida que resolva um número inteiro positivo.

A NTILE()função atribui números de 1 até o valor de a expressioncada linha. O número de linhas nos buckets pode diferir no máximo em 1. O restante do número de linhas dividido pelos buckets é alocado para cada bucket, começando com o bucket 1.

Por exemplo, se você tiver 10 linhas e 4 intervalos. Cada balde terá 2 linhas. O resto de 10/4 é 2. Portanto, o primeiro balde terá 2 + 1 = 3 linhas, o segundo balde também terá 3 linhas.

A imagem a seguir ilustra a ideia:

SQLite NTILE

Se o valor da expressão for maior que o número de linhas, a NTILE()função preencherá o número de baldes igual ao número de linhas. Conseqüentemente, os baldes restantes estarão vazios.

Por exemplo, se você tiver 10 linhas e 11 buckets, cada linha receberá um número de bucket de 1 a 10. O 11º bucket não terá nenhuma linha.

Observe que você não pode usar uma subconsulta ou uma função de janela no arquivo expression.

PARTITION BY

A PARTITION BYcláusula divide os conjuntos de resultados em partições às quais a NTILEfunção se aplica.

ORDER BY

A ORDER BYcláusula especifica a ordem das linhas em cada partição à qual se NTILE()aplica.

NTILE()Exemplo de função SQLite 

Usaremos a tabela de trilhas do banco de dados de exemplo para demonstrar a NTILE()função:

Usando  NTILE()a função SQLite com ORDER BYexemplo

A instrução a seguir usa a NTILE()função para dividir em 4 grupos os valores da Millisecondscoluna da trackstabela do álbum 1.

A Millisecondscoluna possui 10 valores neste álbum, então os dois valores extras, que são o restante de 10/4, são distribuídos para os grupos 1 e 2, que, portanto, têm mais valor do que os grupos 3 ou 4.

SELECT
	Name,
	Milliseconds,
	NTILE ( 4 ) OVER ( 
		ORDER BY Milliseconds ) LengthBucket
FROM
	tracks 
WHERE
	AlbumId = 1;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Aqui está a saída:

SQLite NTILE com exemplo ORDER BY

Usando NTILE()a função SQLite com PARTITION BYexemplo de cláusula

A instrução a seguir usa a NTILE()função para dividir as faixas de cada álbum em 3 grupos pelos valores na Bytescoluna:

SELECT
	AlbumId,
	Name,
	Milliseconds,
	NTILE ( 3 ) OVER ( 
		PARTITION BY AlbumId
		ORDER BY Bytes ) SizeBucket
FROM
	tracks;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

A imagem a seguir mostra a saída:

SQLite NTILE com exemplo PARTITION BY

Neste exemplo, a PARTITION BYcláusula distribuiu as linhas em partições ou álbuns. A ORDER BYcláusula classificava as faixas de cada álbum por tamanho em bytes. E a NTILE()função atribuiu um número de intervalo para cada faixa e redefiniu o número de intervalo para cada álbum.

Neste tutorial, você aprendeu como usar a NTILE()função SQLite para dividir um conjunto de resultados em vários intervalos e atribuir um número de intervalo a cada linha.

Deixe um comentário

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