> > > I tried your code in Postgres 8.2: > 8.2 ?, Seems you have tested it in very Old version.
> CREATE OR REPLACE FUNCTION _final_mode(anyarray) > > RETURNS anyelement AS > > $BODY$ > > SELECT a > > FROM unnest($1) a > > GROUP BY 1 > > ORDER BY COUNT(1) DESC, 1 > > LIMIT 1; > > $BODY$ > > LANGUAGE 'sql' IMMUTABLE; > > DROP AGGREGATE IF EXISTS mode(anyelement); > > CREATE AGGREGATE mode(anyelement) > (SFUNC=array_append,STYPE=anyarray,FINALFUNC=_final_mode,INITCOND='{}'); > > > I also added the unnest function (although mine seemed to already have it). > > > > > I tested it like this: > > sdap=# create table Z as (select 7 as value); > > sdap=# select mode(value) from Z; > > mode > > ------ > > 7 > > (1 row) --WORKS > > > > sdap=# insert into Z values (8); > > sdap=# insert into Z values (8); > > select mode(value) from Z; > > mode > > ------ > > 8 > > (1 row) --WORKS > > > > sdap=# insert into Z values (NULL); > > sdap=# select mode(value) from Z; > > ERROR: null array element where not supported (arrayfuncs.c:872) > > > > Any ideas? > > > It works very well in the latest version. Have you checked it. bash-4.1$ psql psql.bin (9.1.4) Type "help" for help. postgres=# \pset null NULL Null display is "NULL". postgres=# select * from z; value ------- 7 NULL (2 rows) postgres=# select mode(value) from Z; mode ------ 7 (1 row) --Raghav