How to force Postgres to calculate MAX(boolean)

Started by Andrusalmost 21 years ago4 messagesgeneral
Jump to latest
#1Andrus
noeetasoftspam@online.ee

I try to convert code from other database to Postgres.

CREATE TABLE test(test BOOLEAN);
SELECT MAX(test) FROM test;

causes error

ERROR: function max(boolean) does not exist
HINT: No function matches the given name and argument types. You may need
to add explicit type casts.

I tried
SELECT MAX(test:integer)::boolean FROM test;

but this casuses error

ERROR: cannot cast type boolean to integer

I have lot of MAX() functions applied to boolean expressions.

How to force Postgres to calculate MAX(boolean) ?

MAX(boolean) should return true if its argument evaluates true for at least
one row.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Andrus (#1)
Re: How to force Postgres to calculate MAX(boolean)

"Andrus" <noeetasoftspam@online.ee> writes:

MAX(boolean) should return true if its argument evaluates true for at least
one row.

We call it bool_or() ...

regards, tom lane

#3Ropel
ropel@ropel.it
In reply to: Andrus (#1)
Re: How to force Postgres to calculate MAX(boolean)

Andrus wrote:

I try to convert code from other database to Postgres.

CREATE TABLE test(test BOOLEAN);
SELECT MAX(test) FROM test;

causes error

ERROR: function max(boolean) does not exist
HINT: No function matches the given name and argument types. You may need
to add explicit type casts.

I tried
SELECT MAX(test:integer)::boolean FROM test;

but this casuses error

ERROR: cannot cast type boolean to integer

I have lot of MAX() functions applied to boolean expressions.

How to force Postgres to calculate MAX(boolean) ?
MAX(boolean) should return true if its argument evaluates true for at least
one row.

Use bool_or(boolean) instead.
Bye

#4Chris Browne
cbbrowne@acm.org
In reply to: Andrus (#1)
Re: How to force Postgres to calculate MAX(boolean)

I try to convert code from other database to Postgres.

CREATE TABLE test(test BOOLEAN);
SELECT MAX(test) FROM test;

causes error

ERROR: function max(boolean) does not exist
HINT: No function matches the given name and argument types. You may need
to add explicit type casts.

I tried
SELECT MAX(test:integer)::boolean FROM test;

but this casuses error

ERROR: cannot cast type boolean to integer

I have lot of MAX() functions applied to boolean expressions.

How to force Postgres to calculate MAX(boolean) ?

MAX(boolean) should return true if its argument evaluates true for at least
one row.

Have you looked into creating a suitable aggregate function yourself?

\h CREATE AGGREGATE

http://www.postgresql.org/docs/current/static/xaggr.html
--
output = reverse("gro.gultn" "@" "enworbbc")
http://linuxdatabases.info/info/rdbms.html
"The test of a principle is whether it applies even to people you
don't like." -- Henry Spencer