Re: Ku mmulierte Summe über eine Aggregat Spalte?

Andreas Kretschmer <[email protected]> Sun, 20 Dec 2015 16:27:12 +0100
Newsgroups gmane.comp.db.postgresql.german
Message-ID <20151220152712.GA10226@tux>
Ulrich Goebel <[email protected]> wrote:

> Hallo,
>
> ich habe eine Tabelle von Personen und möchte eine Statistik über die  
> Alterstruktur haben, etwa
>
> select
>   alter,
>   count(*) as anzahl
> from t_person
> group by alter
> order by alter;
>
> Das ergibt z.B.
>
> alter | anzahl
>    15 |      3
>    16 |      5
>    17 |      2
>    18 |      4
>
> Zusätzlich möchte ich eine Spalte, die mir angibt, wieviele Personen bis  
> zu dem jeweiligen Alter dabei sind. Das ist die Aufsummierung der Spalte  
> "anzahl":

Dafür gibt es Window-Funktionen:

test=*# select * from foo;
 a  | b
----+---
 15 | 3
 16 | 5
 17 | 2
 18 | 4
(4 rows)

test=*# select *, sum(b) over (order by a) from foo;
 a  | b | sum
----+---+-----
 15 | 3 |   3
 16 | 5 |   8
 17 | 2 |  10
 18 | 4 |  14
(4 rows)



Andreas
-- 
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect.                              (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly."   (unknown)
Kaufbach, Saxony, Germany, Europe.              N 51.05082°, E 13.56889°


-- 
Sent via pgsql-de-allgemein mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein