/ / Wie erstelle ich eine in MySQL gespeicherte Aggregatfunktion? - MySQL, Aggregatfunktionen, gespeicherte Funktionen

Wie erstelle ich eine MySQL-gespeicherte Aggregatfunktion? - mysql, Aggregatfunktionen, gespeicherte Funktionen

Ich muss eine gespeicherte Funktion schreiben, die eineAggregatoperation für eine Spalte. Sagen wir mal einen Median (aber eigentlich gibt es viele verschiedene Zusammenfassungsfunktionen, die ich implementieren möchte). Idealerweise hätte ich so etwas gerne medBy( col1 col2 col3 ) Dies gibt dann für jede Zeile einen Median der col1-Werte aller Zeilen zurück, die denselben col2- und col3-Wert wie diese haben. Auf diese Weise würde ich nicht tun müssen GROUP BY Bei der gesamten Abfrage haben Sie einfach einen Wiederholungswert in dieser einen Spalte.

Diese Frage ( Wie schreibe ich die Quantil-Aggregatfunktion? ) fragte etwas Ähnliches, aber es wurde eher mit einer Abfrage als mit einer gespeicherten Funktion beantwortet.

Was ich gerne wissen möchte, ist die Syntax, um anzugeben, dass die gespeicherte Funktion für die gesamte Spalte gelten soll col1 und die Werte der aktuellen Zeile von col2 und col3.


@djacobson: Alle Beispiele für gespeicherte Funktionen, die ich sehe, behandeln jeden Parameter als einen einzelnen, skalaren Wert. Die Frage, mit der ich anfangen sollte, ist vielleicht, wie eine gespeicherte Gesamtfunktion überhaupt deklariert wird. Nehmen wir an, ich möchte nur eine Funktion, die so aussieht: medBy(col1) und das gibt den Median der in dem Argument angegebenen Spalte zurück. Einmal für jede Reihe. Also wenn ich das tue SELECT col1 my_values, medBy(col1) my_median FROM foo Ich werde eine Spalte mit Werten erhalten (my_values) und eine Spalte, die nur der sich wiederholende Median der ersten Spalte ist (my_median).

Vielen Dank.

Antworten:

1 für die Antwort № 1

Sie müssen anscheinend eine systemeigene gemeinsam genutzte Bibliothek in C oder C ++ schreiben, um dies auszuführen. Schaut mal rein http://dev.mysql.com/doc/refman/5.6/en/create-function-udf.html