Re: CASE und Aggregatfunktion

From: Thomas Markus <t(dot)markus(at)proventis(dot)net>
To: marc(dot)hanisch(at)ateam(dot)de
Cc: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Re: CASE und Aggregatfunktion
Date: 2009-03-26 10:05:43
Message-ID: 49CB5377.90608@proventis.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Hi,

mach doch eher sowas wie:

SELECT name,
greatest(SUM(betrag),0) AS einnahmen,
least(SUM(betrag),0) AS ausgaben
FROM table
GROUP BY name

die abfrage scheint aber rein fachlich falsch zu sein da mindestens
einer der beiden summen 0 sein muss. Ich tippe mal es soll eher sowas
sein wie:

SELECT name,
sum(greatest(betrag,0)) AS einnahmen,
sum(least(betrag,0)) AS ausgaben
FROM table
GROUP BY 1

Gruss
Thomas

Marc Hanisch schrieb:
> 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
>
> Erreichen will ich damit, dass ein und das selbe Feld in Abhängigkeit
> des Inhaltes also unter anderem Namen (einnahmen und ausgaben) ausgeben
> wird.
> 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.
>
> Viele Grüße,
> Marc
>
>
>
>

--
Thomas Markus

====================================================
proventis GmbH | Zimmerstr. 79-81 | D-10117 Berlin |
Tel +49 (0)30 2936399-22 | Fax -50 | t(dot)markus(at)proventis(dot)net
-----------------------------------------------------------------
Geschäftsführer: Norman Frischmuth | Sitz: Berlin
Handelsregister: AG Berlin-Charlottenburg, HR 82917
-----------------------------------------------------------------
Blue Ant-webbasiertes Projektmanagement - aktuelle Termine 2008:
http://www.proventis.net/website/live/blueant/veranstaltungen.html
====================================================

Attachment Content-Type Size
t_markus.vcf text/x-vcard 266 bytes

In response to

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Marc Hanisch 2009-03-26 10:11:46 Re: CASE und Aggregatfunktion
Previous Message Marc Hanisch 2009-03-26 09:18:01 CASE und Aggregatfunktion