COUNT(expr)
Returns a count of the number of non-NULL values of expr in the rows retrieved by a SELECT statement. The result is a BIGINT value.
NULLIF(expr1, expr2)
Returns NULL if expr1 = expr2 is true, otherwise returns expr1. This is the same as CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.
Соответственно, запрос с выборкой количества четных и нечетных id:
SELECT COUNT(NULLIF(id % 2, 1)) AS odd, COUNT(NULLIF(id % 2, 0)) AS even FROM table
Проверка:
mysql> CREATE TEMPORARY TABLE test (id integer);
Query OK, 0 rows affected (0.08 sec)
mysql> INSERT INTO test VALUES (1), (3), (5), (7), (9), (10), (12);
Query OK, 7 rows affected (0.03 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> SELECT COUNT(NULLIF(id % 2, 1)) AS odd, COUNT(NULLIF(id % 2, 0)) AS even FROM test;
+-----+------+
| odd | even |
+-----+------+
| 2 | 5 |
+-----+------+
1 row in set (0.02 sec)