Мне нужно написать хранимую функцию, которая выполняет статистическую операцию со столбцом. Скажем, медиана (но на самом деле, я хочу реализовать много различных функций суммирования). В идеале я хотел бы иметь что-то вроде medBy( col1 col2 col3 )
, которое затем для каждой строки возвращает медиану значений col1 всех строк, которые имеют те же значения col2 и col3, что и эта. Таким образом, мне не нужно было бы делать GROUP BY
для всего запроса, просто иметь повторяющееся значение в этом одном столбце.
Этот вопрос ( Как написать агрегатную функцию квантиля? ) задавал нечто похожее, но на него отвечал запрос, а не хранимая функция.
Я хотел бы знать, что такое синтаксис для указания того, что хранимая функция должна работать со всем столбцом col1
и значениями текущей строки col2
и col3
.
@ djacobson: все примеры хранимых функций, которые я вижу, рассматривают каждый параметр как одно скалярное значение. Возможно, вопрос, с которого я должен начать, это как вообще объявлять хранимую функцию. Итак, допустим, я просто хочу функцию, которая выглядит следующим образом: medBy(col1)
и возвращает медиану столбца, указанного в аргументе. Один раз для каждого ряда. Поэтому, если я сделаю SELECT col1 my_values, medBy(col1) my_median FROM foo
, я получу столбец значений (my_values
) и столбец, который является просто повторяющейся медианой первого столбца (my_median
).
Спасибо.