Я хотел бы спросить вас, как в PostgreSQL вы можете проверить, является ли одно из логических значений в столбце таблицы истинным, используя функцию выбора или агрегирования?
Спасибо.
Существует несколько логических агрегатных функций , которые вы можете использовать: bool_and, bool_or, every.
bool_and
bool_or
every
В вашем конкретном случае вам нужна совокупность bool_or. Запрос так же прост:
SELECT bool_or(my_column) FROM my_table
Вы не можете использовать 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 истинное значение:
select sum(cast(data as int)) > 0
Это лучше, чем существующее решение, потому что его можно встроить в более крупный запрос, возможно, содержащий group by и другие выражения where