Выбрать или логическую агрегатную функцию в PostgreSQL - PullRequest
6 голосов
/ 14 сентября 2010

Я хотел бы спросить вас, как в PostgreSQL вы можете проверить, является ли одно из логических значений в столбце таблицы истинным, используя функцию выбора или агрегирования?

Спасибо.

Ответы [ 3 ]

11 голосов
/ 13 февраля 2015

Существует несколько логических агрегатных функций , которые вы можете использовать: bool_and, bool_or, every.

В вашем конкретном случае вам нужна совокупность bool_or.
Запрос так же прост:

SELECT bool_or(my_column) FROM my_table
4 голосов
/ 14 сентября 2010

Вы не можете использовать SUM (DATA), но вы можете преобразовать значение (см. Ниже) в int (0 = false, 1 = true).Однако может быть более эффективно использовать EXISTS (...), особенно если вас не интересует количество значений TRUE.

create table test(data boolean);
insert into test values(true), (false);
select sum(cast(data as int)) from test;
select exists(select * from test where data);
1 голос
/ 02 мая 2013

Чтобы узнать, существует ли хотя бы 1 истинное значение:

select sum(cast(data as int)) > 0

Это лучше, чем существующее решение, потому что его можно встроить в более крупный запрос, возможно, содержащий group by и другие выражения where

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...