2017-02-21 2 views
0

Я хотел бы иметь возможность создать свою собственную функцию GROUP BY. Как и у функций AVG() или SUM(), которые могут использоваться в GROUP BY, где среднее значение и сумма вычисляются из значений в каждой конкретной группе, я хотел бы иметь возможность создать свою собственную функцию, которая будет вычислять что-то из значений в группа. Предположим, я хотел бы создать функцию MYFN(), которая будет вычислять Σx^2/n (x - значение в группе и n число значений в группе). Использование этой функции должно выглядеть следующим образом:Моя собственная функция GROUP BY

SELECT mygroup,MYFN(x) 
FROM mytable 
GROUP BY mygroup 
ORDER BY 2 DESC 

Как это сделать?

+0

Не могли бы вы разместить небольшие данные о smull и желаемый результат, скажем, используя описанную вами функцию. Мне не совсем понятно, как оценивать такую ​​функцию в группе значений – Aleksej

+1

[Этот ответ] (http://stackoverflow.com/questions/21499796/product-aggregate-function) содержит некоторую информацию о методах Oracle для настраиваемой группы функции. –

ответ

1
SELECT mygroup, sum(ColFun) As ColFun FROM 
(
    SELECT mygroup,MYFN(x) As ColFun FROM mytable 
)Y 
GROUP BY mygroup 
+1

Почему функция SUM используется здесь? –

+0

@sbrbot хочу функцию Как AVG() или SUM() .... –

Смежные вопросы