Всем привет.Вопрос такой. Есть поле типа boolean.
Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых 'false';В MySQL проходит так
select sum(b),sum(!b) from tbl;Как тоже самое сделать в postgresql.
Заранее благодарен, Дима.
>Всем привет.
>
>Вопрос такой. Есть поле типа boolean.
>Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых
>'false';
>
>В MySQL проходит так
>select sum(b),sum(!b) from tbl;
>
>Как тоже самое сделать в postgresql.
>
>Заранее благодарен, Дима.
Э-э, вы серьезно спрашиваете или тонко издеваетесь? Делайте
"select * from tbl" и получите ответ на ваш вопрос.
Или у вас поле типа boolean умеет принимать какое-то иное значение кроме
'true' и 'false'? Или вы допускаете значение 'null' в этом поле? А зачем?P.S. Почитайте про ключевое слово WHERE в операторе SELECT.
>>Всем привет.
>>
>>Вопрос такой. Есть поле типа boolean.
>>Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых
>>'false';
>>
>>В MySQL проходит так
>>select sum(b),sum(!b) from tbl;
>>
>>Как тоже самое сделать в postgresql.
>>
>>Заранее благодарен, Дима.
>
>
>Э-э, вы серьезно спрашиваете или тонко издеваетесь? Делайте
>"select * from tbl" и получите ответ на ваш вопрос.
>Или у вас поле типа boolean умеет принимать какое-то иное значение кроме
>
>'true' и 'false'? Или вы допускаете значение 'null' в этом поле? А
>зачем?
>
>P.S. Почитайте про ключевое слово WHERE в операторе SELECT.
Нет, я не издеваюсь, я серьезно. Мне нужно, чтобы запрос выдал сразу число true и число false.У меня, кстати вышло так
select SUM(cast(case WHEN b then 1 else 0 end as int)), SUM(cast(case WHEN b then 0 else 1 end as int))from tbl;
А-а, только теперь до меня дошло, что вам нужна не общая сумма, а отдельно
количество истинных и отдельно - ложных значений поля. Прошу прощения,
тормознул :-).
>Всем привет.
>
>Вопрос такой. Есть поле типа boolean.
>Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых
>'false';
>
>В MySQL проходит так
>select sum(b),sum(!b) from tbl;
>
>Как тоже самое сделать в postgresql.
>
>Заранее благодарен, Дима.странные ответы
select b, sum(*) from tbl group by b;
>>Всем привет.
>>
>>Вопрос такой. Есть поле типа boolean.
>>Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых
>>'false';
>>
>>В MySQL проходит так
>>select sum(b),sum(!b) from tbl;
>>
>>Как тоже самое сделать в postgresql.
>>
>>Заранее благодарен, Дима.
>
>странные ответы
>
>select b, sum(*) from tbl group by b;
В таком случае мне выдастся результат в двух строках. А на самом деле мне нужен результат в одной строке, так как у меня там еще полно на самом деле условий grop by и where. (Запрос гораздо более сложный, это просто я в вопросе для выделения сути дела свел его к такому простому случаю).P.S. А так вроде бы вопрос отпал. Работает то что я написал.
select SUM(cast(case WHEN b then 1 else 0 end as int)), SUM(cast(case WHEN b then 0 else 1 end as int))from tbl;
>>>Всем привет.
>>>
>>>Вопрос такой. Есть поле типа boolean.
>>>Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых
>>>'false';
>>>
>>>В MySQL проходит так
>>>select sum(b),sum(!b) from tbl;
>>>
>>>Как тоже самое сделать в postgresql.
>>>
>>>Заранее благодарен, Дима.
>>
>>странные ответы
>>
>>select b, sum(*) from tbl group by b;
>
>
>В таком случае мне выдастся результат в двух строках. А на самом
>деле мне нужен результат в одной строке, так как у меня
>там еще полно на самом деле условий grop by и where.
>(Запрос гораздо более сложный, это просто я в вопросе для выделения
>сути дела свел его к такому простому случаю).
>
>P.S. А так вроде бы вопрос отпал. Работает то что я написал.
>
>select SUM(cast(case WHEN b then 1 else 0 end as int)), SUM(cast(case
>WHEN b then 0 else 1 end as int))from tbl;тады ой
>Всем привет.
>
>Вопрос такой. Есть поле типа boolean.
>Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых
>'false';
>
>В MySQL проходит так
>select sum(b),sum(!b) from tbl;
>
>Как тоже самое сделать в postgresql.
>
>Заранее благодарен, Дима.чуть чуть упростить можно -
select count(*),(select count(*) from tbl where not b) from tbl where b;looks bit nicely ;-)
>>Всем привет.
>>
>>Вопрос такой. Есть поле типа boolean.
>>Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых
>>'false';
>>
>>В MySQL проходит так
>>select sum(b),sum(!b) from tbl;
>>
>>Как тоже самое сделать в postgresql.
>>
>>Заранее благодарен, Дима.
>
>чуть чуть упростить можно -
>select count(*),(select count(*) from tbl where not b) from tbl where b;
>
>
>looks bit nicely ;-)
Спасибо, тоже идея. А то к MySQL 3.23 привык, вложенных запросов не делаю :-)