· 7 years ago · Jan 31, 2019, 12:16 PM
1ERROR: the aggregation functions are not allowed in GROUP BY LINE 17:
2... ect votazione.favorevoli from votazione group by (MAX(vota ... ^
3********** Error **********
4ERROR: aggregate functions are not allowed in GROUP BY SQL state: 42803
5
6INSERT INTO leggeapprovata (titolo,
7 relatore,
8 numerolegislatura,
9 testo,
10 votisi,
11 votino,
12 astenuti,
13 datapromulgazione,
14 promulgatada,
15 numlegge,
16 dataapprovazionecamera,
17 dataapprovazionesenato)
18 SELECT ddl.titolo,
19 ddl.relatore,
20 legislatura.numero,
21 ddl.testo,
22 (select votazione.favorevoli from votazione group by (MAX(votazione.data)) AND tipoassemblea='senato'),
23 (select votazione.contrari from votazione group by (MAX(votazione.data)) AND tipoassemblea='senato'),
24 (select votazione.astenuti from votazione group by (MAX(votazione.data)) AND tipoassemblea='senato'),
25 promulgazione.data,
26 promulgazione.presidente,
27 (select votazione.codice from votazione group by (MAX(votazione.data)) AND tipoassemblea='senato'),
28 (select MAX(votazione.data) from votazione,ddl where tipoassemblea='camera' and votazione.ddl=ddl.titolo),
29 (select MAX(votazione.data) from votazione,ddl where tipoassemblea='senato' and votazione.ddl=ddl.titolo)
30 FROM ddl, legislatura, votazione, promulgazione
31 WHERE ddl.promulgato='si' and ddl.titolo=promulgazione.ddl and (promulgazione.data between legislatura.datainizio and legislatura.datafine);
32
33CREATE TABLE public.leggeapprovata
34(
35 titolo character varying(1000) NOT NULL,
36 numerolegislatura integer NOT NULL,
37 testo text,
38 votisi integer,
39 votino integer,
40 astenuti integer,
41 datapromulgazione date,
42 promulgatada character varying(100),
43 relatore character varying(100)[] NOT NULL,
44 dataapprovazionecamera date,
45 dataapprovazionesenato date,
46 numlegge character(10),
47 CONSTRAINT leggeapprovatapkey PRIMARY KEY (titolo, numerolegislatura, relatore),
48 CONSTRAINT leggeapprovatanumerolegislaturafkey FOREIGN KEY (numerolegislatura)
49 REFERENCES public.legislatura (numero) MATCH SIMPLE
50 ON UPDATE NO ACTION ON DELETE NO ACTION,
51 CONSTRAINT leggeapprovatapromulgatadafkey FOREIGN KEY (promulgatada)
52 REFERENCES public.presidentedellarepubblica (presidente) MATCH SIMPLE
53 ON UPDATE NO ACTION ON DELETE NO ACTION,
54 CONSTRAINT leggeapprovatatestofkey FOREIGN KEY (testo, relatore)
55 REFERENCES public.ddl (testo, relatore) MATCH SIMPLE
56 ON UPDATE NO ACTION ON DELETE NO ACTION,
57 CONSTRAINT leggeapprovatatitolofkey FOREIGN KEY (titolo, datapromulgazione)
58 REFERENCES public.promulgazione (ddl, data) MATCH SIMPLE
59 ON UPDATE NO ACTION ON DELETE NO ACTION,
60 CONSTRAINT leggeapprovatavotisifkey FOREIGN KEY (votisi, votino, astenuti, numlegge)
61 REFERENCES public.votazione (favorevoli, contrari, astenuti, codice) MATCH SIMPLE
62 ON UPDATE NO ACTION ON DELETE NO ACTION,
63 CONSTRAINT leggeapprovatatitolonumerolegislaturatestorelatorenukey UNIQUE (titolo, numerolegislatura, testo, relatore, numlegge)
64)
65WITH (
66 OIDS=FALSE
67);
68ALTER TABLE public.leggeapprovata
69 OWNER TO postgres;
70GRANT ALL ON TABLE public.leggeapprovata TO public;
71GRANT ALL ON TABLE public.leggeapprovata TO postgres WITH GRANT OPTION;
72
73-- Trigger: inserimentoinleggeapprovata on public.leggeapprovata
74
75-- DROP TRIGGER inserimentoinleggeapprovata ON public.leggeapprovata;
76
77CREATE TRIGGER inserimentoinleggeapprovata
78 BEFORE INSERT
79 ON public.leggeapprovata
80 FOR EACH ROW
81 WHEN ((pg_trigger_depth() = 0))
82 EXECUTE PROCEDURE public.inserimentoinleggeapprovata();
83ALTER TABLE public.leggeapprovata DISABLE TRIGGER inserimentoinleggeapprovata;
84COMMENT ON TRIGGER inserimentoinleggeapprovata ON public.leggeapprovata IS 'when (pg_trigger_depth()=)livello di annidamento corrente dei trigger PostgreSQL (0 se non viene chiamato, direttamente o indirettamente, da un trigger)';
85
86
87
88CREATE TRIGGER inserimentoinleggeapprovata
89 BEFORE INSERT
90 ON public.leggeapprovata
91 FOR EACH ROW
92 WHEN ((pg_trigger_depth() = 0))
93 EXECUTE PROCEDURE public.inserimentoinleggeapprovata();
94COMMENT ON TRIGGER inserimentoinleggeapprovata ON public.leggeapprovata IS 'when (pg_trigger_depth()=)livello di annidamento corrente dei trigger PostgreSQL (0 se non viene chiamato, direttamente o indirettamente, da un trigger)';
95
96-- Function: public.inserimentoinleggeapprovata()
97
98-- DROP FUNCTION public.inserimentoinleggeapprovata();
99
100CREATE OR REPLACE FUNCTION public.inserimentoinleggeapprovata()
101 RETURNS trigger AS
102$BODY$
103begin
104if exists (select 1 from leggeapprovata
105where leggeapprovata.titolo = NEW.titolo)
106 THEN
107 RAISE EXCEPTION '% già ESISTENTE IN leggeapprovata', NEW.titolo;
108 ELSE RETURN new;
109 end if;
110end;
111
112$BODY$
113 LANGUAGE plpgsql VOLATILE
114 COST 1000;
115ALTER FUNCTION public.inserimentoinleggeapprovata()
116 OWNER TO postgres;
117GRANT EXECUTE ON FUNCTION public.inserimentoinleggeapprovata() TO postgres;
118GRANT EXECUTE ON FUNCTION public.inserimentoinleggeapprovata() TO public;