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:
| id | level |
| 1 | 4 |
| 2 | 4 |
| 3 | 5 |
| 4 | 6 |
| 5 | 7 |
| 6 | 7 |
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1Esto devolverá:
| id | nivel | piezas |
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 5 | 2 |
| 4 | 6 | 2 |
| 5 | 7 | 3 |
| 6 | 7 | 3 |
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.
Desafío
FácilTablas 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_nameCuando 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
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns9Multiple tables
Basic Join Part 1Basic Join Part 2Recap - JoinSelf joinRecap - Self JoinUnionSimplify queries, WITH keywordRecap - With QueriesRecap - Real Estate Contractor12Window Functions part 2
RANK & DENSE_RANK FunctionsRecap - RANK & DENSE_RANKNTILE FunctionAggregation FunctionsROWS & RANGE Criterion