sql >> Base de Datos >  >> RDS >> Mysql

MySQL Math:¿es posible calcular una correlación en una consulta?

Aquí hay una implementación aproximada del coeficiente de correlación de muestra como se describe en:

Wikipedia:correlación y dependencia

create table sample( x float not null, y float not null );
insert into sample values (1, 10), (2, 4), (3, 5), (6,17);

select @ax := avg(x), 
       @ay := avg(y), 
       @div := (stddev_samp(x) * stddev_samp(y))
from sample;

select sum( ( x - @ax ) * (y - @ay) ) / ((count(x) -1) * @div) from sample;
+---------------------------------------------------------+
| sum( ( x - @ax ) * (y - @ay) ) / ((count(x) -1) * @div) |
+---------------------------------------------------------+
|                                       0.700885077729073 |
+---------------------------------------------------------+