У меня есть MySQL таблица корреляционных данных, которые мне нужно извлечь. Я выполняю этот запрос, чтобы найти корреляцию между x и y с учетом идентификатора; однако мне нужно запустить x.id = 1 против y.id = 2, 3, 4, 5 ... В настоящее время я просто запускаю приведенную ниже команду несколько раз для каждой пары. Есть ли способ ускорить запрос, чтобы я мог выполнить запрос один раз, как второе уравнение?
SELECT @correlation := (COUNT(x.value)*SUM(x.value*y.value) -
sum(x.value)*sum(y.value))/SQRT((COUNT(x.value)*SUM(x.value*x.value) -
sum(x.value)*sum(x.value))*(COUNT(y.value)*SUM(y.value*y.value) -
sum(y.value)*sum(y.value))) AS correlation
FROM tbl_expressions x, tbl_expressions y
WHERE x.id=1 AND y.id=2 AND x.expressionnumber=y.expressionnumber;
SELECT @correlation := (COUNT(x.value)*SUM(x.value*y.value) -
sum(x.value)*sum(y.value))/SQRT((COUNT(x.value)*SUM(x.value*x.value) -
sum(x.value)*sum(x.value))*(COUNT(y.value)*SUM(y.value*y.value) -
sum(y.value)*sum(y.value))) AS correlation
FROM tbl_expressions x, tbl_expressions y
WHERE x.id=1 AND y.id IN (2, 3, 4, 5, 6, 7) AND x.expressionnumber=y.expressionnumber;
Я хочу, чтобы результат был примерно таким:
Корреляция
0,83
0,82
0,74
0,64
...
но сейчас запрос выводит только одну строку (соотношение между x.id и последним y.id)