NTILE Function
Fait partie de la section Les fondamentaux du Journey SQL de Coddy — leçon 67 sur 72.
NTILE(n) numérote les lignes en les divisant en n morceaux approximativement égaux. Il est souvent utilisé pour des améliorations de performance - envoyer de grandes quantités de données en une seule fois n'est peut-être pas une bonne idée, donc cette fonction permet d'envoyer de plus petits morceaux à la fois.
Par exemple:
| 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 table1Cela renverra :
| id | level | pieces |
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 5 | 2 |
| 4 | 6 | 2 |
| 5 | 7 | 3 |
| 6 | 7 | 3 |
Nous avons obtenu 3 groupes : niveau 4 dans le groupe 1, niveaux 5 et 6 dans le groupe 2, et niveau 7 dans le groupe 3.
Quand le nombre de lignes n'est pas divisible uniformément par n, NTILE distribue les lignes aussi uniformément que possible, les groupes plus grands apparaissant en premier. Par exemple, si vous avez 9 lignes et NTILE(4), la distribution serait :
- Groupe 1 : 3 lignes
- Groupe 2 : 2 lignes
- Groupe 3 : 2 lignes
- Groupe 4 : 2 lignes
Cela garantit qu'aucun groupe ne diffère de plus d'une ligne d'un autre groupe, et que les lignes supplémentaires sont distribuées aux groupes numérotés les plus bas en premier.
Défi
FacileTables et colonnes disponibles :
<strong>creatures</strong>:<strong>creature_name</strong>,<strong>preference</strong>,<strong>has_legs</strong>(contient 'YES' ou 'NO')
Dans ce défi, nous avons des créatures qui veulent trouver un partenaire. Nous devons les aider à trouver leur correspondance.
Chaque créature a une préférence représentée par un nombre. Si deux créatures ont un nombre suffisamment proche, elles pourraient former un bon couple.
Divisez les créatures en 3 groupes en fonction de leurs valeurs de préférence, mais ne considérez que les créatures qui ont des jambes (où has_legs = 'YES'). Retournez le creature_name, preference, et leur group_number (1, 2 ou 3). Triez les résultats par preference par ordre croissant.
Aide-mémoire
La fonction NTILE(n) divise les lignes en n groupes approximativement égaux, les numérotant séquentiellement :
SELECT column1, column2, NTILE(3) OVER (ORDER BY column2) as group_number
FROM table_nameLorsque les lignes ne sont pas divisiblement par n, NTILE distribue les lignes aussi uniformément que possible, les groupes plus grands apparaissant en premier. Par exemple, avec 9 lignes et NTILE(4) :
- Groupe 1 : 3 lignes
- Groupe 2 : 2 lignes
- Groupe 3 : 2 lignes
- Groupe 4 : 2 lignes
Essayez vous-même
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Les fondamentaux
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