Ich habe eine Tabelle mit Entitätsname, Jahr und Aktivitätsnummer als unten. Während einiger Jahre gibt es keine Aktivität.Berechnen der laufenden Summe ab x Jahren vor
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
Um es auf postgresql zu erstellen;
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);
Ich mag die Gesamtzahl der in den letzten x Jahre haben, mit der Zahl dieses Jahr Aktivitäten für jede Einheit für jedes Jahr als Gebrüll.
Als Beispiel für x = drei Jahre.
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
Große Frage. Beispieldaten, erwartete Ausgabe, DDL. Es ist erwähnenswert, dass Stack Overflow die Registerkarten nicht speichert, so dass Ihre COPY-Ausgabe fehlerhaft war. Besser, "COPY ... CSV" zu verwenden. –