NTILE
Teilt die Zeilen einer Fensterpartition in die angegebene Anzahl ungefähr gleich großer Gruppen und gibt die Gruppennummer der Zeile zurück.
MySQL 8.4
NTILE(number_of_groups)- number_of_groups
- Anzahl der Gruppen, positive ganze ZahlINT
Rückgabewert
Ganze Zahl (BIGINT UNSIGNED) von 1 bis number_of_groups
Beispiele
Drei Gruppen nach Geburtsdatum
MySQL 8.4
SELECT member_name,
birthday,
NTILE(3) OVER (
ORDER BY birthday
) AS age_group
FROM FamilyMembers;Viertelgrenzen nach Bestellsumme
MySQL 8.4
SELECT bucket,
MIN(total_amount) AS min_amount,
MAX(total_amount) AS max_amount,
COUNT(*) AS orders
FROM (
SELECT total_amount,
NTILE(4) OVER (
ORDER BY total_amount
) AS bucket
FROM orders
) AS t
GROUP BY bucket
ORDER BY bucket;Details
Wenn sich die Zeilen nicht gleichmäßig aufteilen lassen, bekommen die ersten Gruppen eine Zeile mehr: 8 Zeilen werden auf 3 Gruppen als 3, 3 und 2 verteilt. Gibt es mehr Gruppen als Zeilen, kommt jede Zeile in eine eigene Gruppe. Zeilen mit demselben Wert in ORDER BY können in verschiedenen Gruppen landen, ohne ORDER BY werden die Zeilen beliebig auf die Gruppen verteilt.