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:
| 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 table1Isso retornará:
| id | level | pieces |
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 5 | 2 |
| 4 | 6 | 2 |
| 5 | 7 | 3 |
| 6 | 7 | 3 |
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.
Desafio
FácilTabelas 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_nameQuando 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
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
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