Regroupement avec NTILE et Cume_Dist
Répartissez les lignes en N groupes de taille égale avec NTILE et calculez la distribution cumulée avec CUME_DIST et PERCENT_RANK.
Regroupement avec NTILE et Cume_Dist est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
NTILE : compartiments de taille égale
NTILE(n) répartit les lignes ordonnées dans n compartiments de taille à peu près égale :
SELECT id, total,
NTILE(4) OVER (ORDER BY total) AS quartile
FROM orders;
-- 1 = bottom 25%, 2 = next, 3, 4 = top 25%Compartiments de percentiles
NTILE(10) pour les déciles, NTILE(100) pour les percentiles :
SELECT id, score,
NTILE(100) OVER (ORDER BY score DESC) AS percentile
FROM students;
-- percentile 1 = top 1%PERCENT_RANK
Le rang relatif sous forme de nombre flottant dans [0, 1] :
SELECT id, score,
PERCENT_RANK() OVER (ORDER BY score) AS pct_rank
FROM students;
-- 0 for the lowest, 1 for the highest.CUME_DIST
La fraction de lignes dont la valeur est inférieure ou égale à celle de la ligne actuelle :
SELECT id, score,
CUME_DIST() OVER (ORDER BY score) AS cume_dist
FROM students;
-- "What share of students scored ≤ this one?"Statistiques de percentile avec PERCENTILE_CONT
Calculer la valeur correspondant à un percentile (interpolation continue) :
SELECT
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) AS median,
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY total) AS p95,
PERCENTILE_CONT(0.99) WITHIN GROUP (ORDER BY total) AS p99
FROM orders;PERCENTILE_DISC
Comme PERCENTILE_CONT, mais renvoie une valeur réellement existante plutôt qu'une valeur interpolée :
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY total)NTILE sur des partitions
Un compartiment par utilisateur, par catégorie, etc. :
SELECT user_id, total,
NTILE(4) OVER (PARTITION BY user_id ORDER BY total) AS user_quartile
FROM orders;Histogramme avec NTILE
Construire les classes de l'histogramme :
SELECT bucket, MIN(total) AS bucket_min, MAX(total) AS bucket_max, COUNT(*)
FROM (
SELECT NTILE(10) OVER (ORDER BY total) AS bucket, total
FROM orders
) sub
GROUP BY bucket
ORDER BY bucket;Agrégation par compartiment
Après la répartition en compartiments, calculer les statistiques de chaque compartiment :
SELECT user_quartile, COUNT(*) AS users, AVG(total) AS avg_total
FROM (
SELECT user_id, NTILE(4) OVER (ORDER BY total) AS user_quartile, total
FROM orders
) sub
GROUP BY user_quartile;Combiner les fonctions de fenêtre
Les combiner dans une seule requête pour obtenir un rapport détaillé :
SELECT id, total,
NTILE(4) OVER w AS quartile,
PERCENT_RANK() OVER w AS pct_rank,
AVG(total) OVER w AS overall_avg
FROM orders
WINDOW w AS (ORDER BY total);Quand NTILE peut être trompeur
Les égalités dans ORDER BY peuvent produire des compartiments de tailles inégales (NTILE ne tient pas compte des égalités). Utilisez une colonne de départage.
Récapitulatif
NTILE + PERCENT_RANK + CUME_DIST couvrent l'analyse des distributions.
- NTILE pour les compartiments de quantiles
- PERCENTILE_CONT/DISC pour les statistiques p50/p95/p99
- Combiner avec PARTITION BY pour une analyse par groupe
Vérification rapide
Vous avez besoin de la latence p95 à partir d'une colonne de temps de réponse. Quelle fonction utiliser ?
Questions Fréquemment Posées
La leçon « Regroupement avec NTILE et Cume_Dist » est-elle gratuite ?
Oui — le texte complet de « Regroupement avec NTILE et Cume_Dist » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Regroupement avec NTILE et Cume_Dist » ?
Répartissez les lignes en N groupes de taille égale avec NTILE et calculez la distribution cumulée avec CUME_DIST et PERCENT_RANK. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Regroupement avec NTILE et Cume_Dist » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Clauses de fenêtre : ROWS ou RANGE
- Lag et lead avec des fenêtres de lignes
- Regroupement avec NTILE et Cume_Dist
- Modèles de rapports du monde réel