Thread: 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.
"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
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
> 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