pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Bruno Wolff III <bruno@wolff.to>
To: PFC <lists@boutiquenumerique.com>
Cc: Kenneth Gonsalves <lawgon@thenilgiris.com>
Cc: Ramakrishnan Muralidharan <ramakrishnanm@pervasive-postgres.com>
Cc: pgsql-sql@postgresql.org
Subject: Re: two sums in one query
Date: Fri, 8 Jul 2005 09:07:25 -0500
Message-ID: <20050708140725.GA22725@wolff.to> (raw)
In-Reply-To: <op.stlkoiq4th1vuj@localhost>
References: <02767D4600E59A4487233B23AEF5C5992A4093@blrmail1.aus.pervasive.com>
	<200507081306.08597.lawgon@thenilgiris.com>
	<op.stlkoiq4th1vuj@localhost>

On Fri, Jul 08, 2005 at 15:49:20 +0200,
  PFC <lists@boutiquenumerique.com> wrote:
> 
> 
> >>   SELECT  SUM( CASE WHEN COALESCE( DEBIT , 0 ) <> 0 THEN
> >>COALESCE( AMOUNT , 0 ) ELSE 0 END ) AS DEBIT_AMT , SUM( CASE WHEN
> >>COALESCE( CREDIT , 0 ) <> 0 THEN   COALESCE( AMOUNT , 0 ) ELSE 0
> >>END ) AS CREDIT_AMT FROM <TABLE NAME>
> 
> 	I don't know if it will use indexes (bitmapped OR indexes in 8.1 
> 	?)... if  you have indexes on debit and on credit, you could do
> 
> SELECT (SELECT sum(amount) FROM table WHERE debit=X) AS debit, (SELECT  
> sum(amount) FROM table WHERE credit=x) AS credit;

If most of the records are credits or debits you don't want to do this.
A single sequential scan through the table will be the best plan.



view thread (7+ messages)  latest in thread

Message-ID: <20050708140725.GA22725@wolff.to>
Permalink:  ../20050708140725.GA22725@wolff.to/
Also on:    postgresql.org/message-id/20050708140725.GA22725@wolff.to

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: bruno@wolff.to, lists@boutiquenumerique.com, lawgon@thenilgiris.com, ramakrishnanm@pervasive-postgres.com
  Subject: Re: two sums in one query
  In-Reply-To: <20050708140725.GA22725@wolff.to>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox