PERCENT_RANK
Gibt den relativen Rang einer Zeile in der Fensterpartition zurück, also den Anteil der Zeilen, die vor ihr stehen.
MySQL 8.1
PERCENT_RANK() OVER ([PARTITION BY ...] [ORDER BY ...])Parameter
- PARTITION BYoptional
- Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden; der Anteil wird in jeder separat berechnet
- ORDER BYoptional
- Reihenfolge der Zeilen, die den Platz bestimmt; ohne sie bekommen alle Zeilen 0
Rückgabewert
Gleitkommazahl (DOUBLE) von 0 bis 1
Beispiele
Anteil nach Geburtsdatum
MySQL 8.1
SELECT member_name,
birthday,
RANK() OVER (
ORDER BY birthday
) AS birthday_rank,
PERCENT_RANK() OVER (
ORDER BY birthday
) AS birthday_percent_rank
FROM FamilyMembers;Position des Gehalts in der Abteilung
MySQL 8.1
SELECT department_id,
name,
salary,
ROUND(
PERCENT_RANK() OVER (
PARTITION BY department_id
ORDER BY salary
),
2
) AS salary_percent_rank
FROM employees;Details
Der Wert wird so berechnet: (RANK() - 1) / (Anzahl der Zeilen in der Partition - 1): Die erste Zeile bekommt 0, die letzte 1. Zeilen mit gleichen Werten in ORDER BY bekommen denselben Anteil, wie denselben Platz bei RANK. In einer Partition aus einer Zeile ist das Ergebnis 0.