Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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: t_markus.vcf
Description: text/x-vcard (266 bytes)

In response to

Responses

pgsql-de-allgemein by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group