On Mar 20, 2008, at 2:23 PM, Sam Mason wrote:
I'm trying to write a version of the MIN aggregate for values of RECORD type. I'm somewhat stuck on getting type information about the argument out, I can determine how many attributes it's got but I can't seem to do any better than that. Does anyone have any good pointers into the code
for places to help me understand what's happening?

The reason for doing this is mainly because I think it'd be nicer to be
doing things like:

  SELECT i, (MIN((j,k))).k
  FROM tbl
  GROUP BY i;

How is that any better than SELECT i, min(k) FROM tbl GROUP BY i ?

instead of:

  SELECT DISTINCT ON (i) i, k
  FROM tbl
  ORDER BY i,j,k;

Which as far as I can tell should produce identical results, except the first has cleaner semantics. It also allows you to combine MIN and MAX in the same query, giving the value of k for the smallest and largest j in this example--requiring two queries if it was done using the DISTINCT
ON method.

I don't see how min(record) even allows for that.

I'm not saying that min/avg/max/etc(RECORD) wouldn't be useful; I'm just failing to see the use in these examples.
--
Decibel!, aka Jim C. Nasby, Database Architect  [EMAIL PROTECTED]
Give your computer some brain candy! www.distributed.net Team #1828


Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to