Raggruppamento con NTILE e Cume_Dist
Divida le righe in N gruppi di uguali dimensioni con NTILE e calcoli la distribuzione cumulativa con CUME_DIST e PERCENT_RANK.
Raggruppamento con NTILE e Cume_Dist è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
NTILE: bucket di dimensioni uguali
NTILE(n) suddivide le righe ordinate in n bucket di dimensioni approssimativamente uguali:
SELECT id, total,
NTILE(4) OVER (ORDER BY total) AS quartile
FROM orders;
-- 1 = bottom 25%, 2 = next, 3, 4 = top 25%Bucket per percentile
NTILE(10) per i decili, NTILE(100) per i percentili:
SELECT id, score,
NTILE(100) OVER (ORDER BY score DESC) AS percentile
FROM students;
-- percentile 1 = top 1%PERCENT_RANK
Il rango relativo come numero reale nell'intervallo [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 frazione di righe con un valore minore o uguale a quello della riga corrente:
SELECT id, score,
CUME_DIST() OVER (ORDER BY score) AS cume_dist
FROM students;
-- "What share of students scored ≤ this one?"Statistiche percentili con PERCENTILE_CONT
Calcoli il valore corrispondente a un percentile (interpolazione continua):
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
Come PERCENTILE_CONT, ma restituisce un valore realmente presente invece di uno interpolato:
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY total)NTILE sulle partizioni
Crei un bucket per utente, categoria e così via:
SELECT user_id, total,
NTILE(4) OVER (PARTITION BY user_id ORDER BY total) AS user_quartile
FROM orders;Istogramma con NTILE
Crei gli intervalli dell'istogramma:
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;Aggregazione per bucket
Dopo aver creato i bucket, calcoli le statistiche per ciascun bucket:
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;Combinazione di funzioni finestra
Le combini in un'unica query per ottenere un report completo:
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);Quando NTILE può fuorviare
I valori uguali in ORDER BY possono produrre bucket di dimensioni diverse (NTILE non tiene conto dei valori uguali). Usi una colonna di spareggio.
Riepilogo
NTILE + PERCENT_RANK + CUME_DIST coprono l'analisi della distribuzione.
- NTILE per i bucket dei quantili
- PERCENTILE_CONT/DISC per le statistiche p50/p95/p99
- Li combini con PARTITION BY per l'analisi per gruppo
Verifica rapida
Deve calcolare la latenza p95 a partire da una colonna di tempi di risposta. Quale funzione usa?
Domande Frequenti
La lezione «Raggruppamento con NTILE e Cume_Dist» è gratuita?
Sì — il testo completo di «Raggruppamento con NTILE e Cume_Dist» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Raggruppamento con NTILE e Cume_Dist»?
Divida le righe in N gruppi di uguali dimensioni con NTILE e calcoli la distribuzione cumulativa con CUME_DIST e PERCENT_RANK. Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Raggruppamento con NTILE e Cume_Dist»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Clausole frame: ROWS e RANGE
- Lag/Lead con finestre frame
- Raggruppamento con NTILE e Cume_Dist
- Schemi di reporting nel mondo reale