Menu
Coddy logo textTech

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:

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

Cela renverra :

idlevelpieces
141
241
352
462
573
673

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.

challenge icon

Défi

Facile

Tables 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_name

Lorsque 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

quiz iconTestez-vous

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