Data update
[contractdashboard.git] / install.sql
blob:a/install.sql -> blob:b/install.sql
--- a/install.sql
+++ b/install.sql
@@ -1,1 +1,20 @@
+-- https://wiki.postgresql.org/wiki/Aggregate_Mode
+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;
+ 
+-- Tell Postgres how to use our aggregate
+CREATE AGGREGATE mode(anyelement) (
+  SFUNC=array_append, --Function to call for each row. Just builds the array
+  STYPE=anyarray,
+  FINALFUNC=_final_mode, --Function to call after everything has been added to array
+  INITCOND='{}' --Initialize an empty array when starting
+);