SQL - условие по значению поля? - PullRequest
2 голосов
/ 11 июля 2010

Хотелось бы узнать, могу ли я как-то протестировать какое-либо значение по условию в каждой возвращаемой строке в запросе?

т.д .: У меня есть столбцы:

X   Y   Z
-1   1  2
2   2   -1
3   -1  3

Я хочу использовать avg () для всех значений, кроме -1. Я не могу использовать где <> -1, так как каждая строка содержит его один раз.

Ответы [ 2 ]

2 голосов
/ 11 июля 2010

Попробуйте следующее:

SELECT AVG(IF(x <> -1, x, NULL)) AS avgX,
       AVG(IF(y <> -1, y, NULL)) AS avgY,
       AVG(IF(z <> -1, x, NULL)) AS avgZ
FROM mytable;
2 голосов
/ 11 июля 2010

Используйте WHERE, чтобы отфильтровать значения, которые вы не хотите включать в среднее значение, например, чтобы включить все значения в среднее значение, кроме -1:

SELECT
    (SELECT AVG(x) FROM table1 WHERE x >= 0) AS x,
    (SELECT AVG(y) FROM table1 WHERE y >= 0) AS y,
    (SELECT AVG(z) FROM table1 WHERE z >= 0) AS z

Обратите внимание, что если вы действительно хотите включить все цифры, кроме -1, как вы сказали в своем вопросе, тогда вам следует изменить предложение WHERE на x <> -1, но я сомневаюсь, что это то, что вы хотите.

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