Также очень странно считались NULL, в таблице их несколько тысяч, но данный запрос выдавал 11.
В итоге использовал Ваш подход, немного переделав, родил такое вот чудо:
SELECT q1.c AS men, q2.c AS women, q3.t AS total FROM (SELECT COUNT(DISTINCT CASE WHEN people.gender = 'М' THEN list.id END) AS c FROM ListTable AS list LEFT JOIN PeopleTable AS people ON (list.userID = people.id)) q1, (SELECT COUNT(DISTINCT CASE WHEN people.gender = 'Ж' THEN list.id END) AS c FROM ListTable AS list LEFT JOIN peopleTable AS people ON (list.userID = people.id)) q2, (SELECT COUNT(list.id) AS t FROM ListTable AS list) q3
Таким образом, получил общее число, кол-во мужчин и женщин. А "неопределенных" пользователей уже можно спокойно высчитать.
В итоге использовал Ваш подход, немного переделав, родил такое вот чудо:
SELECT q1.c AS men, q2.c AS women, q3.t AS total FROM (SELECT COUNT(DISTINCT CASE WHEN people.gender = 'М' THEN list.id END) AS c FROM ListTable AS list LEFT JOIN PeopleTable AS people ON (list.userID = people.id)) q1, (SELECT COUNT(DISTINCT CASE WHEN people.gender = 'Ж' THEN list.id END) AS c FROM ListTable AS list LEFT JOIN peopleTable AS people ON (list.userID = people.id)) q2, (SELECT COUNT(list.id) AS t FROM ListTable AS list) q3
Таким образом, получил общее число, кол-во мужчин и женщин. А "неопределенных" пользователей уже можно спокойно высчитать.
Ещё раз спасибо большое!