The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Подсчет числа строк, !*! Дима, 25-Окт-05, 10:37  [смотреть все]
Всем привет.

Вопрос такой. Есть поле типа boolean.
Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых 'false';

В MySQL проходит так
select sum(b),sum(!b) from tbl;

Как тоже самое сделать в postgresql.

Заранее благодарен, Дима.

  • Подсчет числа строк, !*! allez, 11:21 , 25-Окт-05 (1)
    >Всем привет.
    >
    >Вопрос такой. Есть поле типа boolean.
    >Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых
    >'false';
    >
    >В MySQL проходит так
    >select sum(b),sum(!b) from tbl;
    >
    >Как тоже самое сделать в postgresql.
    >
    >Заранее благодарен, Дима.


    Э-э, вы серьезно спрашиваете или тонко издеваетесь? Делайте
    "select * from tbl" и получите ответ на ваш вопрос.
    Или у вас поле типа boolean умеет принимать какое-то иное значение кроме
    'true' и 'false'? Или вы допускаете значение 'null' в этом поле? А зачем?

    P.S. Почитайте про ключевое слово WHERE в операторе SELECT.

    • Подсчет числа строк, !*! Дима, 11:54 , 25-Окт-05 (2)
      >>Всем привет.
      >>
      >>Вопрос такой. Есть поле типа 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;

  • Подсчет числа строк, !*! allez, 12:02 , 25-Окт-05 (3)
    А-а, только теперь до меня дошло, что вам нужна не общая сумма, а отдельно
    количество истинных и отдельно - ложных значений поля. Прошу прощения,
    тормознул :-).
  • Подсчет числа строк, !*! GD, 12:20 , 25-Окт-05 (4)
    >Всем привет.
    >
    >Вопрос такой. Есть поле типа boolean.
    >Нужно одним запросом подсчитать число строк, значение которых 'true' и значение которых
    >'false';
    >
    >В MySQL проходит так
    >select sum(b),sum(!b) from tbl;
    >
    >Как тоже самое сделать в postgresql.
    >
    >Заранее благодарен, Дима.

    странные ответы

    select b, sum(*) from tbl group by b;

    • Подсчет числа строк, !*! Дима, 13:02 , 25-Окт-05 (5)
      >>Всем привет.
      >>
      >>Вопрос такой. Есть поле типа 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;


      • Подсчет числа строк, !*! GD, 14:06 , 25-Окт-05 (6)
        >>>Всем привет.
        >>>
        >>>Вопрос такой. Есть поле типа 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;

        тады ой

  • Подсчет числа строк, !*! Divan, 13:53 , 27-Окт-05 (7)
    >Всем привет.
    >
    >Вопрос такой. Есть поле типа 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 ;-)

    • Подсчет числа строк, !*! Дима, 13:59 , 27-Окт-05 (8)
      >>Всем привет.
      >>
      >>Вопрос такой. Есть поле типа 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 привык, вложенных запросов не делаю :-)




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру