Однопроходное решение
Существует два варианта коэффициента корреляции Пирсона: один для выборки и один для всего населения. Это однопроходные и, я думаю, правильные формулы для обоих:
-- Methods for calculating the two Pearson correlation coefficients
SELECT
-- For Population
(avg(x * y) - avg(x) * avg(y)) /
(sqrt(avg(x * x) - avg(x) * avg(x)) * sqrt(avg(y * y) - avg(y) * avg(y)))
AS correlation_coefficient_population,
-- For Sample
(count(*) * sum(x * y) - sum(x) * sum(y)) /
(sqrt(count(*) * sum(x * x) - sum(x) * sum(x)) * sqrt(count(*) * sum(y * y) - sum(y) * sum(y)))
AS correlation_coefficient_sample
FROM your_table;
Я разработал и протестировал это как T-SQL. Код, который генерировал тестовые данные, не переводился в MySQL, но формулы должны. Убедитесь, что ваши x и y являются десятичными значениями; целочисленная математика может значительно повлиять на эти вычисления.