Menu
Coddy logo textTech

NTILE Function

Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 67 de 72.

NTILE(n) numera las filas dividiéndolas en n piezas aproximadamente iguales. Se utiliza a menudo para mejoras de rendimiento: enviar grandes cantidades de datos de una vez podría no ser una buena idea, por lo que esta función permite enviar piezas más pequeñas a la vez.

Por ejemplo:

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

Esto devolverá:

idnivelpiezas
141
241
352
462
573
673

Obtuvimos 3 grupos: nivel 4 en el grupo 1, nivel 5 y nivel 6 en el grupo 2, y nivel 7 en el grupo 3.
Cuando el número de filas no es divisible de manera uniforme por n, NTILE distribuye las filas lo más uniformemente posible, con los grupos más grandes apareciendo primero. Por ejemplo, si tienes 9 filas y NTILE(4), la distribución sería:

  • Grupo 1: 3 filas
  • Grupo 2: 2 filas
  • Grupo 3: 2 filas
  • Grupo 4: 2 filas

Esto asegura que ningún grupo difiera de ningún otro grupo en más de una fila, y las filas extra se distribuyen a los grupos con números más bajos primero.

challenge icon

Desafío

Fácil

Tablas y columnas disponibles:

  • <strong>creatures</strong>: <strong>creature_name</strong>, <strong>preference</strong>, <strong>has_legs</strong> (contiene 'YES' o 'NO')

En este desafío, tenemos criaturas que quieren encontrar a su pareja. Necesitamos ayudarlas a encontrar su pareja compatible.

Cada criatura tiene una preferencia representada como un número. Si ambas criaturas tienen un número lo suficientemente cercano, podrían ser una buena pareja.

Divide las criaturas en 3 grupos basados en sus valores de preferencia, pero solo considera las criaturas que tienen piernas (donde has_legs = 'YES'). Devuelve el creature_name, preference y su group_number (1, 2 o 3). Ordena los resultados por preference en orden ascendente.

Hoja de referencia

La función NTILE(n) divide las filas en n grupos aproximadamente iguales, numerándolos secuencialmente:

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

Cuando las filas no son divisibles uniformemente por n, NTILE distribuye las filas lo más uniformemente posible, con los grupos más grandes apareciendo primero. Por ejemplo, con 9 filas y NTILE(4):

  • Grupo 1: 3 filas
  • Grupo 2: 2 filas
  • Grupo 3: 2 filas
  • Grupo 4: 2 filas

Pruébalo tú mismo

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos