Может быть, пример из ruby может помочь:
Вы можете включить mixin Comparable
и определить одну функцию "<=>(other)"
, mixin предоставляет все эти функции:
<(other)
>(other)
==(other)
<=(other)
>=(other)
between?(other)
Он делает это, вызывая <=>(other)
и вернув правильный результат.
"instance <=> other"
возвращает 0, если оба объекта равны, меньше 0, если instance
больше other
и больше, чем 0, если other
больше.
Вы не заявляете, какую версию стандартного отклонения Вы хотите вычислить, но различия (стандартное отклонение, в квадрате) для любой версии, могут быть вычислены с помощью комбинации суммы () и количество () агрегатные функции.
select
(count(val)*sum(val*val) - (sum(val)*sum(val)))/((count(val)-1)*(count(val))) as sample_variance,
(count(val)*sum(val*val) - (sum(val)*sum(val)))/((count(val))*(count(val))) as population_variance
from ... ;
все еще будет необходимо пустить квадратный корень их для получения стандартного отклонения.
Нет, я искал тот же вопрос, и в итоге мне пришлось делать вычисления в моем приложении (PHP)
Агрегатные функции, поддерживаемые SQLite, приведены здесь:
http://www.sqlite.org/lang_aggfunc.html
STDEV отсутствует в списке.
Однако модуль extension-functions.c
на этой странице содержит функцию STDEV.