From: | Andreas Kretschmer <akretschmer(at)spamfence(dot)net> |
---|---|
To: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | Re: CASE und Aggregatfunktion |
Date: | 2009-03-26 10:29:45 |
Message-ID: | 20090326102945.GA10641@tux |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Marc Hanisch <hanisch(at)ateam(dot)de> wrote:
> Hallo Liste,
>
> ich nutze öfter eine Query in ähnlicher Art und Weise:
>
> SELECT name,
> CASE WHEN SUM(betrag) > 0
> THEN SUM(betrag)
> ELSE 0
> END AS einnahmen,
> CASE WHEN SUM(betrag) < 0
> THEN SUM(betrag)
> ELSE 0
> END AS ausgaben
> FROM table
> GROUP BY name
Bist Du Dir sicher, damit das zu erreichen, was Du willst?
Ich denke, Du willst eher
sum(
case when betrag > 0 then betrag else 0 end) as einnahmen,
> Es erscheint mir aber umständlich, dass ich PostgreSQL für die Bedingung
> (WHEN) und für die Anweisung (THEN) um die Summierung bemühen muss, was
> ja wahrscheinlich doppelt Performance frisst... Gibt es da einen
> eleganteren Weg? Schließlich wurde die Summe des Betrages ja bei der
> ersten Bedingung bereits berechnet.
Mir erscheint es unlogisch, was Du machst:
test=*# select * from summen;
i | s
---+------
1 | 10
2 | 20
3 | -5
4 | -100
(4 Zeilen)
Zeit: 0,218 ms
test=*# select case when sum(s) > 0 then sum(s) end as einnahmen, case when sum(s) < 0 then sum(s) end as ausgaben from summen;
einnahmen | ausgaben
-----------+----------
| -75
(1 Zeile)
Zeit: 0,274 ms
test=*# select sum(case when s > 0 then s else 0 end) as einnahmen, sum(case when s < 0 then s else 0 end) as ausgaben from summen;
einnahmen | ausgaben
-----------+----------
30 | -105
(1 Zeile)
Welche Variante willst Du?
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°
From | Date | Subject | |
---|---|---|---|
Next Message | Marc Hanisch | 2009-03-26 10:54:41 | Re: CASE und Aggregatfunktion |
Previous Message | Marc Hanisch | 2009-03-26 10:11:46 | Re: CASE und Aggregatfunktion |