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.
Be the first to comment