Mysql Разница двух count

Sav2907

Новичок
Привет, как вычислить разницу двух count? Типа
(SELECT COUNT( `Пол` ) AS `Женщин` FROM `Таблица` WHERE (`Пол` = 'женский'),
(SELECT COUNT( `Пол` ) AS `Мужчин` FROM `Таблица` WHERE (`Пол` = 'мужской')
 

Sav2907

Новичок
Так правильнее
select count(if(value = 1, 1, null)) as value1, count(if(value = 2, 1, null)) as value2 from table;
Нужна их разница
 

antson

Новичок
Партнер клуба
способов много . Лучшее соотношение затрат времени на программирование, быстродействия выбирать в зависимости от потребностей.
начни по KISS принципу.
делаешь два запроса к базе и вычитаешь один из другого.
вот только тип для пола текстовый - это толерантность ?
Хотя черт его знает может уже вместо булевого значения и так писать ;)
и count() просто или count(id) пиши вместо COUNT( `Пол` )
 

Sav2907

Новичок
способов много . Лучшее соотношение затрат времени на программирование, быстродействия выбирать в зависимости от потребностей.
начни по KISS принципу.
делаешь два запроса к базе и вычитаешь один из другого.
вот только тип для пола текстовый - это толерантность ?
Хотя черт его знает может уже вместо булевого значения и так писать ;)
и count() просто или count(id) пиши вместо COUNT( `Пол` )
Можете закончить select count(if(value = 1, 1, null)) as value1, count(if(value = 2, 1, null)) as value2 from table;?
 

antson

Новичок
Партнер клуба
Так правильнее
select count(if(value = 1, 1, null)) as value1, count(if(value = 2, 1, null)) as value2 from table;
Нужна их разница
select sum(if(value = 1, 1, 0)) - sum(if(value = 2, 1, 0)) as raznica

ну или как Sav2907 написал. count считает количество строк где значение выражения не null
 
Последнее редактирование:

antson

Новичок
Партнер клуба
@Sav2907, я думаю Вы уже нашли удовлетворяющее Вас решение.

последнее замечание if,iif и другие варианты короткой записи
CASE WHEN value = 0 THEN 'мужской' WHEN value = 1 THEN 'женский' WHEN value = 2 THEN 'вы в толерантной стране' ELSE '-- что-то мы не все предусмотрели ' END
они различаются от диалекта к диалекту sql (mysql,mssql,spnix,postgre) . А канон он работает практически везде
 

itprog

Cruftsman
можно чуть-чуть оптимизировать: sum(if(value = 1, 1, if(value = 2, -1, 0)))
 
Сверху