Cloud

bool_or

The bool_or() function calculates all the boolean values in the aggregated group, which will have these results:

  • false if all the values are false for every row.

  • true if at least one row in the group is true.

The input and the return type must be in bool.

NULL values are not aggregated, so it returns NULL if there are zero input rows.

Examples

This example uses a payment table that stores details of the orders, whether the order has been paid or unpaid by the customer:

CREATE TABLE payment (
    orderid int,
    custname text,
    orderproduct text,
    ordertotal real,
    paid boolean
);
INSERT INTO payment (orderid, custname, orderproduct, ordertotal, paid)
VALUES
(9557411, 'Maya', 'Jeans', 10.5, false),
(9557421, 'Aaron', 'T-Shirt', 9.2, false),
(9557451, 'Alex', 'Hat', 10.8, false),
(9557311, 'Will', 'Hat', 8.5, true),
(9557321, 'Will', 'T-Shirt', 12.15, false),
(9557351, 'Maya', 'T-Shirt', 9.5, true),
(9557221, 'Maya', 'Jeans', 11.02, false),
(9557251, 'Alex', 'Jeans', 11.09, false),
(9557231, 'Aaron', 'Hat', 14.56, false),
(9557281, 'Aaron', 'Hat', 12.15, false),
(9557291, 'Will', 'T-Shirt', 13.1, false);
SELECT * FROM payment;

This query shows the following table:

+----------+-----------+---------------+-------------+--------+
| orderid  | custname  | orderproduct  | ordertotal  | paid   |
+----------+-----------+---------------+-------------+--------+
| 9557411  | Maya      | Jeans         | 10.5        | f      |
| 9557421  | Aaron     | T-Shirt       | 9.2         | f      |
| 9557451  | Alex      | Hat           | 10.8        | f      |
| 9557311  | Will      | Hat           | 8.5         | t      |
| 9557321  | Will      | T-Shirt       | 12.15       | f      |
| 9557351  | Maya      | T-Shirt       | 9.5         | t      |
| 9557221  | Maya      | Jeans         | 11.02       | f      |
| 9557251  | Alex      | Jeans         | 11.09       | f      |
| 9557231  | Aaron     | Hat           | 14.56       | f      |
| 9557281  | Aaron     | Hat           | 12.15       | f      |
| 9557291  | Will      | T-Shirt       | 13.1        | f      |
+----------+-----------+---------------+-------------+--------+

bool_or with a true result

To find out if all customers have paid for their orders, run the query:

SELECT BOOL_OR(paid) AS "final_result" FROM payment;

If there is at least one TRUE value, the overall result is TRUE. The output shows that some order has been paid regardless of the other unpaid orders.

+--------------+
| final_result |
+--------------+
| t            |
+--------------+

bool_or with a false result

To find out if Aaron has paid for his orders, run the query:

SELECT BOOL_OR(paid) AS aaron_paid
FROM payment
WHERE custname ='Aaron';

If all values are FALSE, then the overall result is FALSE. The output shows that Aaron hasn’t paid for all his orders.

+------------+
| aaron_paid |
+------------+
| f          |
+------------+