J'ai une table MySQL de données de corrélation que j'ai besoin d'extraire. J'exécute cette requête pour trouver la corrélation entre x et y donné l'identifiant; Cependant, j'ai besoin de lancer x.id = 1 contre y.id = 2, 3, 4, 5 ... Actuellement, je cours juste la commande ci-dessous plusieurs fois pour chaque paire. Existe-t-il un moyen d'accélérer la requête afin que je puisse simplement exécuter la requête une fois comme la deuxième équation?affichant toutes les lignes dans un calcul?
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;
Je veux que le résultat soit quelque chose comme ceci:
corrélation
.83
.82
.74
.64
...
mais en ce moment la requête ne sort qu'une ligne (la corrélation entre x.id et le dernier y.id)
merci cela a fonctionné quand j'ai ajouté GROUP BY y.id –