Есть таблица пользователей и их пол, каждый пользователь принадлежит к какой-то группе.
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`gender` enum('m','w') DEFAULT NULL,
`group_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
)INSERT INTO `users` VALUES (1,1,'m'),(2,1,'m'),(3,1,'w'),(4,2,'m'),(5,2,'w'),(6,3,'m');
Необходимо найти группы исключая группу 3, в которых мужчин больше чем женщин. И правильный ответ:
SELECT group_id,
count(IF (gender='m', 1, NULL)) as m,
count(IF (gender='w', 1, NULL)) as w
FROM users
WHERE group_id <> 3
GROUP BY group_id
HAVING m > w
Удачки.
Комментарии