У меня есть два совершенно (или полностью несовершенно?) Коррелированные числа, и я хочу найти корреляцию между ними. Первоначальный сценарий отличается и более сложный, но проблема находится где-то в рамках метода корреляции pg. Пожалуйста, рассмотрим следующий запрос:postgresql corr aggregate function return null
WITH all_series AS (
select t as id, 'One' as name, 1 as num from generate_series(1, 10) t
UNION
select t as id, 'Two' as name, 2 as num from generate_series(1, 10) t
ORDER BY name, id
)
SELECT (t1.name || '|' || t2.name) as names, corr(t2.num, t1.num) c
FROM all_series t1
INNER JOIN all_series t2 ON t1.id = t2.id
WHERE t1.name > t2.name
GROUP BY (t1.name || '|' || t2.name)
ORDER BY (t1.name || '|' || t2.name)
Если удалить группу и открыть выбирает, номера идеально выровнены, которые должны дать что-то, как корреляции .. но это дает пустой (даже не ноль).
С уважением,
Да, проблема была в том, что все значения были точно такими же (не друг против друга, а целая серия с одинаковым значением) ... знаменатель равен 0, pg дает значение null, а не 1 – saGii
@saGii. , , Я должен упомянуть две вещи. (1) Я считаю это ошибкой. (2) Он намекает, что Postgres реализует не численно устойчивый алгоритм корреляции. –