0Pricing
Coding Interview Prep · Lección

NTILE para crear grupos

Divida las filas en cuartiles y bandas percentiles

NTILE para crear grupos es una lección gratuita de Coding Interview Prep en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Coding Interview Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Coding Interview Prep incluye 4 lecciones en total.

Cuando necesita segmentos del mismo tamaño

Los entrevistadores preguntan: «Divida a los clientes en cuatro grupos de gasto del mismo tamaño» o «¿En qué decil se encuentra cada fila?» La herramienta es NTILE.

NTILE(n) distribuye las filas ordenadas en n segmentos lo más uniformemente posible y etiqueta cada fila con el número de su segmento, del 1 al n. En esta lección verá cómo realiza la división, cómo gestiona las cantidades desiguales y en qué se diferencia de las funciones de clasificación.

Sintaxis básica de NTILE

Aplicar NTILE(4) a filas ordenadas por un valor produce cuartiles. Como todas las funciones de ventana, necesita una cláusula OVER; el ORDER BY incluido en ella decide qué filas terminan en los segmentos bajos y cuáles en los altos.

Ordenar de forma ascendente coloca los valores más pequeños en el segmento 1; ordenar de forma descendente invierte el resultado.

SELECT
  customer_id,
  total_spend,
  NTILE(4) OVER (ORDER BY total_spend) AS spend_quartile
FROM customers;

Cómo distribuye NTILE las filas

Con 12 filas y NTILE(4), cada segmento recibe exactamente 12 / 4 = 3 filas. El segmento 1 contiene los 3 valores más bajos y el segmento 4, los 3 más altos.

La idea clave es que NTILE divide por cantidad de filas, no por intervalos de valores. Dos segmentos pueden abarcar intervalos de valores muy diferentes siempre que contengan la misma cantidad de filas.

División desigual

¿Qué ocurre si las filas no se dividen de forma exacta? Con 10 filas y NTILE(4), 10 / 4 = 2, con un resto de 2. NTILE asigna las filas adicionales a los primeros segmentos.

  • Segmento 1: 3 filas
  • Segmento 2: 3 filas
  • Segmento 3: 2 filas
  • Segmento 4: 2 filas

Por tanto, el tamaño de los segmentos difiere como máximo en una fila y los segmentos más grandes aparecen primero. Esta regla exacta es un detalle muy habitual en las entrevistas.

NTILE ignora los empates entre valores

Una trampa importante: NTILE no mantiene los valores iguales en el mismo segmento. Completa los segmentos según la posición, por lo que dos filas con el mismo total_spend pueden terminar en segmentos diferentes únicamente por el orden de las filas.

Si el negocio exige que los valores iguales compartan nivel, NTILE no es la herramienta adecuada; necesita un enfoque basado en valores. Los entrevistadores colocan esta trampa deliberadamente.

Deciles y percentiles

La cantidad de segmentos es simplemente el número que se proporciona. NTILE(10) produce deciles y NTILE(100), bandas percentiles. Así es como los analistas dividen a los usuarios en niveles de rendimiento o bandas de riesgo.

El resultado es el número de la banda, por lo que un valor en el segmento 9 de NTILE(10) se encuentra en el segundo decil más alto.

SELECT
  user_id,
  score,
  NTILE(10) OVER (ORDER BY score DESC) AS decile
FROM leaderboard;

Segmentos por partición

Añada PARTITION BY para dividir en segmentos de forma independiente dentro de cada grupo; por ejemplo, para obtener cuartiles de gasto por región. Cada región vuelve a empezar en el segmento 1.

Esto responde a preguntas como «¿Cuáles son los clientes del cuartil superior dentro de cada región?», donde una región con un gasto general bajo sigue teniendo su propio segmento 4.

SELECT
  region,
  customer_id,
  total_spend,
  NTILE(4) OVER (
    PARTITION BY region
    ORDER BY total_spend DESC
  ) AS regional_quartile
FROM customers;

Filtrar un nivel específico

No puede colocar NTILE(...) directamente en una cláusula WHERE; las funciones de ventana se calculan después de WHERE. Encapsule la consulta en una CTE o subconsulta y, después, filtre por la columna del segmento.

Este patrón, «muéstreme el cuartil superior de los clientes que más gastan», es la forma más habitual en que NTILE aparece en una solución real.

WITH q AS (
  SELECT customer_id, total_spend,
         NTILE(4) OVER (ORDER BY total_spend DESC) AS quartile
  FROM customers
)
SELECT customer_id, total_spend
FROM q
WHERE quartile = 1;

NTILE frente a percentiles basados en valores

NTILE crea segmentos con la misma cantidad de filas. Si, en cambio, necesita un percentil estadístico real (el valor situado en el percentil 90), utilice PERCENTILE_CONT o PERCENTILE_DISC.

  • NTILE(100): indica en qué banda percentil se encuentra una fila, según su posición en la clasificación.
  • PERCENTILE_CONT(0.9): devuelve el valor real correspondiente al percentil 90.

Conocer la diferencia distingue una respuesta segura de una simple suposición.

Cuando ORDER BY importa

NTILE requiere un ORDER BY dentro de OVER; los segmentos no tienen sentido sin un orden definido. La dirección establece qué extremo corresponde al segmento 1.

Si los empates hacen ambigua la asignación y es importante conocer el segmento exacto de una fila en el límite, añada una columna de desempate al orden para obtener resultados deterministas y reproducibles.

Etiquetar los segmentos con nombres

Los números de segmento sin más (1, 2, 3, 4) rara vez son el resultado final. Normalmente, los analistas los asignan a etiquetas de negocio como Bajo, Medio, Alto y Superior mediante una expresión CASE sobre el resultado de NTILE.

Calcule NTILE en una CTE y, después, traduzca el número en la consulta externa. Esto mantiene limpia la lógica de ventana y deja el resultado listo para su presentación.

WITH q AS (
  SELECT customer_id, total_spend,
         NTILE(4) OVER (ORDER BY total_spend) AS bucket
  FROM customers
)
SELECT customer_id, total_spend,
  CASE bucket
    WHEN 1 THEN 'Low'
    WHEN 2 THEN 'Medium'
    WHEN 3 THEN 'High'
    WHEN 4 THEN 'Top'
  END AS spend_tier
FROM q;

Comprobación rápida

Ponga a prueba la regla de distribución desigual.

Repaso

NTILE distribuye las filas ordenadas en segmentos con la misma cantidad de filas:

  • NTILE(n) etiqueta las filas del 1 al n; NTILE(4) representa cuartiles y NTILE(10), deciles.
  • Divide por cantidad de filas, no por intervalos de valores, y asigna las filas adicionales a los primeros segmentos.
  • No mantiene juntos los valores empatados y no puede utilizarse directamente en WHERE.
  • Para obtener el valor de un percentil real, utilice PERCENTILE_CONT.

A continuación: obtener valores de los extremos con FIRST_VALUE, LAST_VALUE y los límites del marco.

Preguntas frecuentes

¿La lección «NTILE para crear grupos» es gratis?

Sí — el texto completo de «NTILE para crear grupos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Coding Interview Prep, actualiza a CoddyKit PRO. El curso de Coding Interview Prep incluye 4 lecciones en total.

¿Qué aprenderé en «NTILE para crear grupos»?

Divida las filas en cuartiles y bandas percentiles Practicas Coding Interview Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Coding Interview Prep?

No se requiere experiencia previa. Coding Interview Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «NTILE para crear grupos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Coding Interview Prep?

Sí. Cada lección de Coding Interview Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. LAG y LEAD para filas adyacentes
  2. Cambio entre periodos
  3. NTILE para crear grupos
  4. FIRST_VALUE, LAST_VALUE y límites del marco
← Volver a Coding Interview Prep