pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Harald Fuchs <nospam@sap.com>
To: pgsql-sql@postgresql.org
Subject: Re: Diffcult query
Date: 22 Mar 2003 10:52:19 +0100
Message-ID: <pusmtfohik.fsf@srv.protecting.net> (raw)
References: <d9Iea.117330$JE5.48428@news2.central.cox.net>

In article <d9Iea.117330$JE5.48428@news2.central.cox.net>,
"Dan Winslow" <d.winslow@cox.net> writes:

> Hi folks. This is giving me fits. I feel like it oughta be simple, but
> apparantly its not...I think.

> Given a table :

> create table tablea (
>   code1 varchar(32),
>   code2 varchar(32),
>   cost    int
> );

> and the rows

> code1    code2    cost
> ----------------------------------
> "aaa"        "bbb"    2
> "ddd"        "eee"    3
> "bbb"        "aaa"    6
> "ggg"         "hhh"    4

> I need a ( preferably single ) query that will sum the costs for all unique
> pairs of codes, without regard to column order. That is, for summing
> purposes, rows 1 and 3 are identical, and should produce the sum of 8 for
> the unordered pair("aaa","bbb"). It should also, of course, prevent the case
> where ("bbb","aaa") is considered a seperate pair. Any ideas would be much
> appreciated.

How about this one?

  SELECT CASE WHEN code1 < code2 THEN code1 ELSE code2 END ||
         '\0' ||
         CASE WHEN code1 < code2 THEN code2 ELSE code1 END AS codes,
         SUM(cost) AS costs
  FROM tablea
  GROUP BY codes;




view thread (5+ messages)

Message-ID: <pusmtfohik.fsf@srv.protecting.net>
Permalink:  ../pusmtfohik.fsf@srv.protecting.net/
Also on:    postgresql.org/message-id/pusmtfohik.fsf@srv.protecting.net

 · 

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: nospam@sap.com
  Subject: Re: Diffcult query
  In-Reply-To: <pusmtfohik.fsf@srv.protecting.net>

* 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