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 expression
pode 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 expression
cada 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:
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 BY
cláusula divide os conjuntos de resultados em partições às quais a NTILE
função se aplica.
ORDER BY
A ORDER BY
clá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 BY
exemplo
A instrução a seguir usa a NTILE()
função para dividir em 4 grupos os valores da Milliseconds
coluna da tracks
tabela do álbum 1.
A Milliseconds
coluna 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:
Usando NTILE()
a função SQLite com PARTITION BY
exemplo 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 Bytes
coluna:
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:
Neste exemplo, a PARTITION BY
cláusula distribuiu as linhas em partições ou álbuns. A ORDER BY
clá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.