Menu
Coddy logo textTech

NTILE Function

Parte da seção Fundamentos do Journey de SQL da Coddy — lição 67 de 72.

NTILE(n) numera as linhas dividindo-as em n partes aproximadamente iguais. É frequentemente usado para melhorias de desempenho - enviar grandes quantidades de dados de uma vez pode não ser uma boa ideia, então esta função permite enviar partes menores de uma vez.

Por exemplo:

idlevel
14
24
35
46
57
67
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1

Isso retornará:

idlevelpieces
141
241
352
462
573
673

Obtivemos 3 grupos: nível 4 no grupo 1, níveis 5 e 6 no grupo 2, e nível 7 no grupo 3.
Quando o número de linhas não é divisível exatamente por n, o NTILE distribui as linhas da forma mais uniforme possível, com os grupos maiores aparecendo primeiro. Por exemplo, se você tiver 9 linhas e NTILE(4), a distribuição seria:

  • Grupo 1: 3 linhas
  • Grupo 2: 2 linhas
  • Grupo 3: 2 linhas
  • Grupo 4: 2 linhas

Isso garante que nenhum grupo difira de qualquer outro grupo por mais de uma linha, e quaisquer linhas extras sejam distribuídas primeiro aos grupos de números mais baixos.

challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

  • <strong>creatures</strong>: <strong>creature_name</strong>, <strong>preference</strong>, <strong>has_legs</strong> (contém 'YES' ou 'NO')

Neste desafio, temos criaturas que querem encontrar um par. Precisamos ajudá-las a encontrar seu par ideal.

Cada criatura tem uma preferência representada por um número. Se ambas as criaturas tiverem um número suficientemente próximo, elas podem formar um bom par.

Divida as criaturas em 3 grupos com base nos valores de suas preferências, mas considere apenas criaturas que têm pernas (onde has_legs = 'YES'). Retorne o creature_name, preference e seu group_number (1, 2 ou 3). Ordene os resultados por preference em ordem ascendente.

Folha de consulta

A função NTILE(n) divide as linhas em n grupos aproximadamente iguais, numerando-os sequencialmente:

SELECT column1, column2, NTILE(3) OVER (ORDER BY column2) as group_number
FROM table_name

Quando as linhas não são divisíveis uniformemente por n, o NTILE distribui as linhas o mais uniformemente possível, com grupos maiores aparecendo primeiro. Por exemplo, com 9 linhas e NTILE(4):

  • Grupo 1: 3 linhas
  • Grupo 2: 2 linhas
  • Grupo 3: 2 linhas
  • Grupo 4: 2 linhas

Experimente você mesmo

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos