Menu
CoddyTech

Função NTILE

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. Ela é frequentemente usada para melhorar o desempenho — enviar grandes quantidades de dados de uma só vez pode não ser uma boa ideia, então essa função permite enviar partes menores de cada 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á:

idnívelpeças
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 igualmente por n, NTILE distribui as linhas da forma mais equilibrada 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 em mais de uma linha, e que as linhas extras sejam distribuídas primeiro para os grupos com numeração menor.

challenge icon

Desafio

Fácil

Tabelas e colunas disponíveis:

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

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

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

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

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

Pratique por conta própria: Playground de SQL