отображать все строки в расчете? - PullRequest
1 голос
/ 27 мая 2009

У меня есть 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)

Ответы [ 2 ]

0 голосов
/ 27 мая 2009

Трудно ответить на этот вопрос, потому что из вашего описания не ясно, для чего нужен запрос.

Но я бы предположил, что вы могли бы использовать GROUP BY для достижения того, что вы хотите. Мне жаль, что я не могу показать пример, потому что я не могу сказать, каков будет ваш результат.

0 голосов
/ 27 мая 2009

если вы используете MySQL 5.0 и выше, вы можете рассмотреть хранимые процедуры для обработки некоторых из этих вещей ....

также, вы рассматривали подзапросы? http://dev.mysql.com/doc/refman/5.1/en/subqueries.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...