0Pricing
SQL Academy · Lektion

Bucketing mit NTILE und Cume_Dist

Teilen Sie Zeilen mit NTILE in N gleich große Gruppen auf und berechnen Sie mit CUME_DIST und PERCENT_RANK die kumulative Verteilung.

Bucketing mit NTILE und Cume_Dist ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

NTILE: Gleich große Buckets

NTILE(n) teilt sortierte Zeilen in n annähernd gleich große Buckets auf:

SELECT id, total,
       NTILE(4) OVER (ORDER BY total) AS quartile
FROM orders;
-- 1 = bottom 25%, 2 = next, 3, 4 = top 25%

Perzentil-Buckets

NTILE(10) für Dezile, NTILE(100) für Perzentile:

SELECT id, score,
       NTILE(100) OVER (ORDER BY score DESC) AS percentile
FROM students;
-- percentile 1 = top 1%

PERCENT_RANK

Der relative Rang als Gleitkommazahl im Bereich [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

Der Anteil der Zeilen, deren Wert kleiner oder gleich dem Wert der aktuellen Zeile ist:

SELECT id, score,
       CUME_DIST() OVER (ORDER BY score) AS cume_dist
FROM students;
-- "What share of students scored ≤ this one?"

Perzentilstatistiken mit PERCENTILE_CONT

Den Wert an einem Perzentil berechnen (kontinuierliche 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

Wie PERCENTILE_CONT, gibt aber einen tatsächlich vorhandenen Wert statt eines interpolierten Werts zurück:

PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY total)

NTILE auf Partitionen

Buckets pro Benutzer, Kategorie usw. erstellen:

SELECT user_id, total,
       NTILE(4) OVER (PARTITION BY user_id ORDER BY total) AS user_quartile
FROM orders;

Histogramm mit NTILE

Histogrammklassen erstellen:

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;

Pro Bucket aggregieren

Nach der Bucket-Zuordnung Statistiken pro Bucket berechnen:

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;

Fensterfunktionen kombinieren

Für einen ausführlichen Bericht in einer Abfrage kombinieren:

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);

Wenn NTILE irreführt

Gleiche Werte bei ORDER BY können zu unterschiedlich großen Buckets führen (NTILE berücksichtigt Gleichstände nicht). Verwenden Sie eine Spalte zur Auflösung von Gleichständen.

Zusammenfassung

NTILE + PERCENT_RANK + CUME_DIST decken die Verteilungsanalyse ab.

  • NTILE für Quantil-Buckets
  • PERCENTILE_CONT/DISC für p50-/p95-/p99-Statistiken
  • Mit PARTITION BY für Analysen pro Gruppe kombinieren

Schnelltest

Sie benötigen die p95-Latenz aus einer Spalte mit Antwortzeiten. Welche Funktion verwenden Sie?

Häufig gestellte Fragen

Ist die Lektion „Bucketing mit NTILE und Cume_Dist“ kostenlos?

Ja — der vollständige Text von „Bucketing mit NTILE und Cume_Dist“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Bucketing mit NTILE und Cume_Dist“?

Teilen Sie Zeilen mit NTILE in N gleich große Gruppen auf und berechnen Sie mit CUME_DIST und PERCENT_RANK die kumulative Verteilung. Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um SQL Academy zu starten?

Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Bucketing mit NTILE und Cume_Dist“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?

Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Frame-Klauseln: ROWS vs. RANGE
  2. Lag/Lead mit Frame-Fenstern
  3. Bucketing mit NTILE und Cume_Dist
  4. Praxisnahe Muster für Berichte
← Zurück zu SQL Academy