FIRST_VALUE
Gibt den Wert von column aus der ersten Zeile des Fensterrahmens zurück.
MySQL 8.1
FIRST_VALUE(column) OVER ([PARTITION BY ...] [ORDER BY ...] [frame])Parameter
- column
- Spalte oder Ausdruck, dessen Wert zurückgegeben wird
- PARTITION BYoptional
- Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden
- ORDER BYoptional
- Reihenfolge der Zeilen in der Partition, die bestimmt, welche Zeile die erste ist; ohne sie ist die erste Zeile beliebig
- frameSchlüsselwortoptional
- Fensterrahmen: ROWS oder RANGE BETWEEN start AND end; standardmäßig vom Anfang der Partition bis zur aktuellen Zeile
Rückgabewert
Wert vom Typ von column
Beispiele
Ältestes Mitglied je Status
MySQL 8.1
SELECT member_name,
status,
birthday,
FIRST_VALUE(member_name) OVER (
PARTITION BY status
ORDER BY birthday
) AS oldest_in_status
FROM FamilyMembers;Abstand zum höchsten Gehalt
MySQL 8.1
SELECT department_id,
name,
salary,
FIRST_VALUE(salary) OVER (
PARTITION BY department_id
ORDER BY salary DESC
) - salary AS gap_to_top
FROM employees;Details
Der Standardrahmen beginnt bei der ersten Zeile der Partition, daher gibt die Funktion ohne eigenen Rahmen den ersten Wert der Partition zurück.
Der Rahmen legt fest, welche Zeilen der Partition die Funktion sieht, und wird nach ORDER BY geschrieben: ROWS BETWEEN start AND end zählt Zeilen, während RANGE BETWEEN start AND end die Werte aus ORDER BY verwendet.
Ohne Rahmen gilt die Standardregel. Hat OVER ein ORDER BY, reicht der Rahmen vom Anfang der Partition bis zur aktuellen Zeile, einschließlich der Zeilen mit demselben Wert in ORDER BY. Ohne ORDER BY ist der Rahmen die ganze Partition.