Fonction NTILE
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 répartissant en n parties approximativement égales. Elle est souvent utilisée pour améliorer les performances : envoyer de grandes quantités de données en une seule fois peut ne pas être une bonne idée, cette fonction permet donc d’envoyer de plus petites parties à la fois.
Par exemple :
| id | niveau |
| 1 | 4 |
| 2 | 4 |
| 3 | 5 |
| 4 | 6 |
| 5 | 7 |
| 6 | 7 |
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1Le résultat sera :
| 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 morceaux : le niveau 4 dans le morceau 1, les niveaux 5 et 6 dans le morceau 2, et le niveau 7 dans le morceau 3.
Lorsque le nombre de lignes n’est pas divisible exactement par n, NTILE répartit les lignes aussi uniformément que possible, les groupes les plus grands apparaissant en premier. Par exemple, si vous avez 9 lignes et NTILE(4), la répartition 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 par rapport à un autre groupe, et que les lignes supplémentaires sont d’abord réparties entre les groupes portant les numéros les plus bas.
Défi
FacileTables et colonnes disponibles :
creatures:creature_name,preference,has_legs(contient 'YES' ou 'NO')
Dans ce défi, nous avons des créatures qui souhaitent trouver leur moitié. Nous devons les aider à trouver leur partenaire.
Chaque créature a une préférence représentée par un nombre. Si les deux créatures ont un nombre suffisamment proche, elles pourraient former une bonne correspondance.
Répartissez les créatures en 3 groupes selon leurs valeurs de préférence, mais ne prenez en compte que les créatures qui ont des pattes (où has_legs = 'YES'). Renvoyez le creature_name, la preference et leur group_number (1, 2 ou 3). Triez les résultats par preference dans l’ordre croissant.
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
1Introduction
IntroductionQu’est-ce qu’une base de donnéesConcepts des bases de donnéesValeurs uniques4D’autres mots-clés
Le mot-clé INLe mot-clé BETWEENLe mot-clé LIKELe mot-clé ASRécapitulatif - Modèles de téléphones portables2Conditions
Bases des conditionsLe mot-clé ANDLe mot-clé ORLe mot-clé NOTCombinaison de plusieurs conditionsParenthèsesBooléens5Opérations arithmétiques
Opérateurs mathématiquesColonnes mathématiquesL’opération moduloLa fonction ROUND()3Format de retour spécifique
Valeurs NULLTrier les résultats, partie 1Trier les résultats, partie 2Récapitulatif - Entreprise de cybersécuritéLimiter le nombre d’enregistrementsRécapitulatif - Usine de véhicules6Défis d’introduction
Récapitulatif - Élection parlementaireRécapitulatif - Arrestation criminelle par la policeRécapitulatif - Récipient de boisson au barRécapitulatif - Ingénieur de nouvelles colonnes9Tables multiples
Jointure de base, partie 1Jointure de base, partie 2Récapitulatif - JointureAuto-jointureRécapitulatif - Auto-jointureUnionSimplifier les requêtes, mot-clé WITHRécapitulatif - Requêtes WITHRécapitulatif - Entrepreneur immobilier12Fonctions de fenêtre – partie 2
Fonctions RANK & DENSE_RANKRécapitulatif – RANK & DENSE_RANKFonction NTILEFonctions d’agrégationCritère ROWS & RANGEEntraînez-vous par vous-même : Playground SQL