Geordnete Ergebnismenge in eine bestimmte Anzahl von Teilen aufzuteilen -NTILE()

NTILE() ist eine Window-Funktion in SQL, die dazu dient, eine geordnete Ergebnismenge in eine bestimmte Anzahl von ungefähr gleich großen Rängen oder Teilen (sogenannte Tiles) aufzuteilen. Jeder Teil enthält eine Untergruppe von Datensätzen, die nach bestimmten Kriterien geordnet sind.

Verwendungszweck NTILE() wird verwendet, um Datensätze in gleichmäßig verteilte Segmente aufzuteilen. Beispielsweise kann man eine Gruppe von Studenten nach ihren Noten in Quartile oder Dezile einteilen, um eine gleichmäßige Verteilung zu gewährleisten.

Verfügbarkeit NTILE() wurde in SQL:2003 standardisiert und ist in den meisten modernen relationalen Datenbanksystemen wie SQL Server, Oracle, PostgreSQL und anderen verfügbar.

Vor- und Nachteile

  • Vorteile:
    • Ermöglicht eine einfache Segmentierung von Daten.
    • Hilfreich bei der Analyse und beim Reporting, insbesondere in Bereichen wie Finanzen, Marketing und Bildung.
    • Fördert eine gleichmäßige Verteilung der Datensätze über Gruppen.
  • Nachteile:
    • Kann zu irreführenden Ergebnissen führen, wenn die Datensätze in den Segmenten nicht homogen sind.
    • Die Einteilung in Teile ist manchmal willkürlich und hängt stark von der Anzahl der gewählten Segmente ab.

Beispiel

Angenommen, Sie haben eine Tabelle SchuelerNoten mit den Spalten SchuelerID, Name und Note. Um diese Tabelle zu erstellen und mit Beispieldaten zu füllen, würden Sie folgende SQL-Befehle verwenden:

CREATE TABLE SchuelerNoten (
    SchuelerID INT,
    Name VARCHAR(50),
    Note DECIMAL(3,2)
);

INSERT INTO SchuelerNoten (SchuelerID, Name, Note)
VALUES 
(1, 'Frank', 1.3),
(2, 'Sylvia', 2.0),
(3, 'Dora', 2.5),
(4, 'Max', 1.6),
(5, 'Florian', 1.5),
(6, 'Dieter', 1.2),
(7, 'Jens', 4.6),
(8, 'Stefan', 2.4),
(9, 'Petra', 3.5),
(10, 'Antonia', 1.6);

Nun möchten Sie die Schüler basierend auf ihren Noten in vier Gruppen (Quartile) einteilen. Hier ist ein Beispiel, wie Sie die NTILE()-Funktion verwenden könnten:

SELECT 
    SchuelerID,
    Name,
    Note,
    NTILE(4) OVER (ORDER BY Note) AS Quartil
FROM SchuelerNoten;

Diese Abfrage teilt die Schüler in vier Gruppen (Quartile) auf Basis ihrer Noten auf. Schüler mit den besten Noten werden im ersten Quartil sein, während Schüler mit den niedrigsten Noten im vierten Quartil sein werden.

Beachten Sie, dass NTILE() eine gerechte Verteilung der Anzahl von Datensätzen pro Quartil anstrebt, aber die tatsächliche Verteilung der Werte kann variieren, insbesondere wenn es viele gleichwertige Datenpunkte gibt.

sql-ergebnis-NTILE

Wie hat dir der Artikel gefallen?

Vielen Dank für dein Feedback!
Über Frank 70 Artikel

Ich bin Frank, Data Warehouse und BI-Entwickler mit langjähriger Expertise in diesem Bereich. Ich verfüge über mehr als 20 Jahre Berufserfahrung im DWH Umfeld. Das Analysieren und Interpretieren von Zahlen, Daten und Fakten ist meine große Leidenschaft, aus diesem Grunde ist auch diese Seite hier entstanden.

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen

E-Mail Adresse wird nicht veröffentlicht.


*