SQL Academy · Lektion

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.

Lektion 3 af 413 trin

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?

Gratis at komme i gang

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

  1. Frame-klausuler: ROWS vs. RANGE
  2. Lag/Lead med frame-vinduer
  3. Inddeling med NTILE og Cume_Dist
  4. Rapporteringsmønstre fra virkeligheden
← Tilbage til SQL Academy