Inddeling med NTILE og Cume_Dist
Opdel rækker i N lige store grupper med NTILE, og beregn den kumulative fordeling med CUME_DIST og PERCENT_RANK.
Inddeling med NTILE og Cume_Dist er en gratis SQL Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i SQL Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. SQL Academy-kurset indeholder 4 lektioner i alt.
NTILE: Grupper af samme størrelse
NTILE(n) opdeler sorterede rækker i n grupper af omtrent samme størrelse:
SELECT id, total,
NTILE(4) OVER (ORDER BY total) AS quartile
FROM orders;
-- 1 = bottom 25%, 2 = next, 3, 4 = top 25%Percentilgrupper
Brug NTILE(10) til deciler og NTILE(100) til percentiler:
SELECT id, score,
NTILE(100) OVER (ORDER BY score DESC) AS percentile
FROM students;
-- percentile 1 = top 1%PERCENT_RANK
Den relative rang som et decimaltal i [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
Andelen af rækker, hvis værdi er mindre end eller lig med den aktuelle rækkes værdi:
SELECT id, score,
CUME_DIST() OVER (ORDER BY score) AS cume_dist
FROM students;
-- "What share of students scored ≤ this one?"Percentilstatistik med PERCENTILE_CONT
Beregn værdien ved en percentil med kontinuerlig interpolation:
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
Som PERCENTILE_CONT, men returnerer en faktisk eksisterende værdi i stedet for en interpoleret værdi:
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY total)NTILE på partitioner
Opret grupper pr. bruger, pr. kategori osv.:
SELECT user_id, total,
NTILE(4) OVER (PARTITION BY user_id ORDER BY total) AS user_quartile
FROM orders;Histogram via NTILE
Opret intervaller til et histogram:
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;Aggregering pr. gruppe
Beregn statistik pr. gruppe efter opdelingen:
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;Kombination af vinduesfunktioner
Bland dem i én forespørgsel for at lave en omfattende rapport:
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);Når NTILE vildleder
Ens værdier i ORDER BY kan give grupper af forskellig størrelse, fordi NTILE ikke tager højde for ligheder. Brug en kolonne til afgørelse ved lighed.
Opsummering
NTILE + PERCENT_RANK + CUME_DIST dækker distributionsanalyse.
- NTILE til kvantilgrupper
- PERCENTILE_CONT/DISC til p50-, p95- og p99-statistik
- Kombinér med PARTITION BY til analyse pr. gruppe
Hurtigt tjek
Du skal finde p95-latenstiden fra en kolonne med svartider. Hvilken funktion skal du bruge?
Lær SQL med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 46
- Lektioner
- 183
Ofte stillede spørgsmål
Er lektionen “Inddeling med NTILE og Cume_Dist” gratis?
Ja — hele teksten til “Inddeling med NTILE og Cume_Dist” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af SQL Academy-kurset, skal du opgradere til CoddyKit PRO. SQL Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Inddeling med NTILE og Cume_Dist”?
Opdel rækker i N lige store grupper med NTILE, og beregn den kumulative fordeling med CUME_DIST og PERCENT_RANK. Du øver dig i SQL Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på SQL Academy?
Der kræves ingen tidligere erfaring. SQL Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Inddeling med NTILE og Cume_Dist”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne SQL Academy-lektion?
Ja. Alle SQL Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Frame-klausuler: ROWS vs. RANGE
- Lag/Lead med frame-vinduer
- Inddeling med NTILE og Cume_Dist
- Rapporteringsmønstre fra virkeligheden