Re: Wishlist: subqueries that return multiple columns

From: Philippe Schmid <phschmid(at)cadinfo(dot)ch>
To: Greg Stark <gsstark(at)mit(dot)edu>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Wishlist: subqueries that return multiple columns
Date: 2004-11-25 20:49:27
Message-ID: 7F292D2A-3F23-11D9-B7A8-000A95AFAF5A@cadinfo.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> I've several times wanted a way to add multiple select output columns
> using a
> single expression. A typical scenario would be if the columns come
> from a
> subselect from another table where repeating the subselect means slow
> performance as well as awkward and repetitive code.
>
> Sometimes the subselect can be rewritten as a join, but that is not
> always the
> case. Consider something like:
>
> select customer.*,
> (select avg(amount),sum(amount) from purchases
> where purchases.customer_id = customer.customer_id
> ) as (avg_purchase, total_purchase),
> (select avg(amount),sum(amount) from quotes
> where quotes.customer_id = customer.customer_id
> ) as (avg_quote, total_quote)
> from customer
>
> (Ok, actually that could be done as a join using some trickery with
> GROUP BY,
> but I have other scenarios where it can't because the subselects
> overlap.)

Yes !! this would be very useful.
I am using such constructs a lot for crosstabs with different time
periods for ex. (lots of subselects) and then doing some simple math
with the resulting columns, ratios for ex.

> With the new support for complex data types like arrays and structures
> perhaps
> I could do this by constructing a RECORD in each subselect and then
> wrapping
> another layer around the query where I explicitly list each element of
> the
> RECORD that I want to include in the result set.
>
> But it would be nice to have some more convenient mechanisms for
> handling this
> case.
>
> --
> greg

Philippe Schmid

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Gaetano Mendola 2004-11-26 00:05:04 Re: Beta5 now Available
Previous Message Greg Stark 2004-11-25 20:29:55 Wishlist: subqueries that return multiple columns