Mam tabelę z nazwą podmiotu, rokiem i numerem aktywności pod numerem poniżej. Przez kilka lat nie ma żadnej aktywności.Obliczanie sumy wyjściowej począwszy od x lat przed
name | year | act_num
-----+------+---------
aa | 2000 | 2
aa | 2001 | 6
aa | 2002 | 9
aa | 2003 | 15
aa | 2005 | 17
b | 2000 | 3
b | 2002 | 4
b | 2003 | 9
b | 2005 | 12
b | 2006 | 2
Aby utworzyć go na postgresql;
CREATE TABLE entity_year_activity (
name character varying(10),
year integer,
act_num integer
);
INSERT INTO entity_year_activity
VALUES
('aa', 2000, 2),
('aa', 2001, 6),
('aa', 2002, 9),
('aa', 2003, 15),
('aa', 2005, 17),
('b', 2000, 3),
('b', 2002, 4),
('b', 2003, 9),
('b', 2005, 12),
('b', 2006, 2);
chciałbym mieć całkowitą liczbę ostatnie x lat z numerem tegorocznych działań dla każdego podmiotu za każdy rok jak mieszka.
Jako przykład dla x = trzech lat.
name | year | act_num | total_3_years
-----+------+---------+---------------
aa | 2000 | 2 | 2
aa | 2001 | 6 | 8
aa | 2002 | 9 | 17
aa | 2003 | 15 | 30
aa | 2004 | 0 | 24
aa | 2005 | 17 | 32
b | 2000 | 3 | 3
b | 2001 | 0 | 3
b | 2002 | 4 | 7
b | 2003 | 9 | 13
b | 2005 | 12 | 21
b | 2006 | 2 | 14
Świetne pytanie. Przykładowe dane, oczekiwany wynik, DDL. Warto zauważyć, że Stack Overflow nie zachowuje kart, więc twoje wyjście "COPY" zostało zmanipulowane. Lepiej używać 'COPY ... CSV'. –