Datenbankix
Neuer Benutzer
- Beiträge
- 1
Hallo zusammen,
ich möchte bei einer MariaDB 10.5 Datenbank u.A. die 95er-Perzentile ausrechnen. Das funktioniert soweit richtig, solange ein PARTITION BY im OVER-Block steht. Sobald ich aber davor ein OVER() habe für alles, dann "verrechnet" sich die Funktion. Anbei bzw. hier ist ein Beispiel:
MariaDB 10.5 | db<>fiddle
Das komische ist: Die erste Perzentile ist noch korrekt, der zweite Aufruf nicht - es kommt dann jedes Mal etwas anderes heraus. Der Grund ist der vorherige Aufruf von einer Funktion mit "OVER ()", egal ob AVG, COUNT, ROW_NUMBER usw.. Klammere ich das aus, dann stimmt das Ergebnis, so als würde der Aufruf das Ergebnis "zerstören".
Was passiert da und wie sollte ich das richtig formulieren? Mein Ziel ist neben den Einzelgruppen (die korrekte Ergebnisse liefern) noch die Gesamtperzentile über alles auszurechnen und daneben noch andere Statistiken wie COUNT, AVG etc. auszugeben.
Eine Zusatzfrage: Wisst ihr ob bei diesen Funktionen auch etwas wie WITH ROLLUP möglich ist? Also eine automatische Gesamtsumme pro Gruppierung wie das bei "GROUP BY" möglich ist. Oder kann man das irgendwie kombinieren? Also quasi alles per GROUP BY klassisch gruppiert und dann dazwischen als Spalte die Perzentile.
Gruß,
Miriam
ich möchte bei einer MariaDB 10.5 Datenbank u.A. die 95er-Perzentile ausrechnen. Das funktioniert soweit richtig, solange ein PARTITION BY im OVER-Block steht. Sobald ich aber davor ein OVER() habe für alles, dann "verrechnet" sich die Funktion. Anbei bzw. hier ist ein Beispiel:
MariaDB 10.5 | db<>fiddle
Das komische ist: Die erste Perzentile ist noch korrekt, der zweite Aufruf nicht - es kommt dann jedes Mal etwas anderes heraus. Der Grund ist der vorherige Aufruf von einer Funktion mit "OVER ()", egal ob AVG, COUNT, ROW_NUMBER usw.. Klammere ich das aus, dann stimmt das Ergebnis, so als würde der Aufruf das Ergebnis "zerstören".
Was passiert da und wie sollte ich das richtig formulieren? Mein Ziel ist neben den Einzelgruppen (die korrekte Ergebnisse liefern) noch die Gesamtperzentile über alles auszurechnen und daneben noch andere Statistiken wie COUNT, AVG etc. auszugeben.
Eine Zusatzfrage: Wisst ihr ob bei diesen Funktionen auch etwas wie WITH ROLLUP möglich ist? Also eine automatische Gesamtsumme pro Gruppierung wie das bei "GROUP BY" möglich ist. Oder kann man das irgendwie kombinieren? Also quasi alles per GROUP BY klassisch gruppiert und dann dazwischen als Spalte die Perzentile.
Gruß,
Miriam