De agregaciónsolo PostgreSQL

BOOL_OR

Devuelve true si una condición se cumple al menos en una fila.

Sintaxis

BOOL_OR(<condición>)

La función de agregación del «¿hay al menos uno?». Junto con GROUP BY lo responde para cada grupo: ¿hay alguien sin teléfono en el departamento? Se salta NULL. Su contraparte es BOOL_AND: «¿todos?».

Datos para los ejemplos

employees

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

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

¿Gana alguien más de 1300? ¿Y más de 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
¿Hay alguien sin teléfono en el departamento?
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
Departamentos con alguien sin teléfono
SELECT department
FROM employees
GROUP BY department
HAVING BOOL_OR(phone IS NULL)
ORDER BY department;
department
backend
design

Ten en cuenta

Los NULL se saltan, y si la condición da NULL en todas las filas, el resultado también es NULL, no false: BOOL_OR(bonus > 100) en un grupo donde nadie tiene bonus.

Si no hay filas, el resultado es NULL.

Para comprobar simplemente si hay al menos una fila, no hace falta ninguna condición: es más sencillo EXISTS (…) o COUNT(*) > 0.

Funciones relacionadas