Агрегатнілише PostgreSQL

BOOL_OR

Повертає true, якщо умова правдива хоча б для одного рядка.

Синтаксис

BOOL_OR(<умова>)

Агрегатна функція «чи є хоч один?». Разом із GROUP BY відповідає на це для кожної групи: чи є у відділі хтось без телефону. NULL пропускає. Дзеркальна функція — BOOL_AND: «чи всі?».

Дані для прикладів

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Ці таблиці вже створено в пісочниці — приклади нижче працюють із ними. Хочеш повторити у своїй базі — скопіюй SQL.

Чи хтось заробляє понад 1300 і понад 2000
SELECT BOOL_OR(salary > 1300) AS someone_above_1300,
BOOL_OR(salary > 2000) AS someone_above_2000
FROM employees;
someone_above_1300someone_above_2000
truefalse
Чи є у відділі хтось без телефону
SELECT department,
BOOL_OR(phone IS NULL) AS someone_without_phone
FROM employees
GROUP BY department
ORDER BY department;
departmentsomeone_without_phone
backendtrue
designtrue
frontendfalse
Відділи, де є хтось без телефону
SELECT department
FROM employees
GROUP BY department
HAVING BOOL_OR(phone IS NULL)
ORDER BY department;
department
backend
design

Зверни увагу

NULL пропускаються, а якщо умова для всіх рядків дає NULL, результат теж NULL, а не false: BOOL_OR(bonus > 100) у групі, де бонусу нема ні в кого.

Якщо рядків нема, результат — NULL.

Щоб просто перевірити, чи є хоч один рядок, умова не потрібна: простіше EXISTS (…) чи COUNT(*) > 0.

Схожі функції