Re: two sums in one query

From: PFC <lists(at)boutiquenumerique(dot)com>
To: "Kenneth Gonsalves" <lawgon(at)thenilgiris(dot)com>, "Ramakrishnan Muralidharan" <ramakrishnanm(at)pervasive-postgres(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: two sums in one query
Date: 2005-07-08 13:49:20
Message-ID: op.stlkoiq4th1vuj@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

>> 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;

>
> actually, all the rows have both 'debit' and 'credit', but based on
> the hint you gave i made this query which works:
>
> select
> sum(case when debit=account then amount else 0 end) as debtotal,
> sum(case when credit=account then amount else 0 end) as credtotal
> from voucherrows
> where
> debit = account
> or
> credit = account
>
> thanks for taking the trouble - i never believed this was possible,
> just asked on the off chance that it *may* be possible

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Bruno Wolff III 2005-07-08 14:07:25 Re: two sums in one query
Previous Message Bruno Wolff III 2005-07-08 13:27:46 Re: getting back autonumber just inserted