MySql, как я могу сгруппировать, в запросе выбора на положительный или отрицательный? - PullRequest
5 голосов
/ 25 января 2011

Я бы хотел сгруппировать по всем отрицательным значениям и всем положительным, есть идеи, как это сделать?

Ответы [ 4 ]

11 голосов
/ 25 января 2011

GROUP BY SIGN (поле) должно работать.

5 голосов
/ 25 января 2011
SELECT SUM(CASE WHEN SomeColumn < 0 THEN 1 ELSE 0 END) AS negative_values,
       SUM(CASE WHEN SomeColumn >=0 THEN 1 ELSE 0 END) AS non_negative_values
    FROM YourTable
2 голосов
/ 25 января 2011

Решение Стефана выглядит лучшим ответом на сегодняшний день. Если вы хотите, чтобы 0 сгруппировался с положительными числами, вы можете использовать

GROUP BY `field` >= 0
1 голос
/ 25 января 2011

Попробуйте что-то вроде этого:

select count(*), IF(foo >= 0, "pos", "neg") as sign  from test group by sign;

, где foo - столбец с положительными или отрицательными значениями

РЕДАКТИРОВАТЬ: решение Стефана более элегантно и лучше, если вы хотите, чтобы нулевые значения обрабатывались по-разномуиз положительных и отрицательных.

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