создание групповой хранимой функции mysql

206
29 января 2018, 04:18

Вечер добрый. Родился у меня такой вопрос:

"как создать в mysql хранимую функцию, которая могла бы принимать в качестве аргумента набор данных?"

хотелось бы сделать функцию, которая, например, искала бы мне медиану, или какой-то N-ый элемент в массиве:

CREATE FUNCTION foo(**arg_array** { RANGE? | TABLE? | ARRAY?? }) 
RETURNS INTEGER
BEGIN
  DECLARE val INTEGER;
  DECLARE sum INTEGER;
  DECLARE done INTEGER DEFAULT 0;
  DECLARE EVENTCURSOR CURSOR FOR SELECT val FROM **arg_array**;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET DONE = 1;
    OPEN EVENTCURSOR;
        WHILE DONE=0 DO
                FETCH EVENTCURSOR INTO val;
                SET sum = sum + val;
        END WHILE;
    CLOSE EVENTCURSOR;
  RETURN val;
END;

А использовал бы ее так:

SELECT uid, foo(value)
FROM user_values
GROUP BY uid

Есть подозрения, что такое невозможно. Пишу сюда, чтобы окончательно убедиться.

Answer 1

Создание аггрегирующей функции в mysql возможно только в UDF, т.е. на компилируемых языках C или C++

Поэтому фактически - возможно, но радости от этого мало.

READ ALSO
Как одним запросом взять информацию из нескольких таблиц? MySQL

Как одним запросом взять информацию из нескольких таблиц? MySQL

Всем привет! Подскажите как одним запросом взять всю информацию о пользователеЯ использовал такой запрос:

197
DrawingVisual в фоновом потоке С# WPF 3.5

DrawingVisual в фоновом потоке С# WPF 3.5

В фоновом потоке формирую матрицу случайными числами:

253
Как создать кастомный шоткат для unity editor, который будет по сочетанию клавиш создавать активной папке проекта файл Assembly Definition?

Как создать кастомный шоткат для unity editor, который будет по сочетанию клавиш создавать активной папке проекта файл Assembly Definition?

Как создать кастомный шоткат для unity editor, который будет по сочетанию клавиш создавать активной папке проекта файл Assembly Definition ?

206
Открытие окон в mvvm-light

Открытие окон в mvvm-light

Как средствами MVVM Light открывать окна в приложении ? Допустим, нужно открыть окно, в которое вводятся данные для добавление нового пользователя...

233