Ordinal value of row within set returned by a query?

From: Randall Lucas <rlucas(at)tercent(dot)net>
To: pgsql-sql(at)postgresql(dot)org
Subject: Ordinal value of row within set returned by a query?
Date: 2003-04-17 18:01:25
Message-ID: 9AE98E9A-70FE-11D7-9BCD-000A957653D6@tercent.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hi folks,

I'm puzzling over whether it is possible within SQL alone to determine
the ordinal position of a row within the set returned by a query. It
seems clear to me that pgsql "knows" what position in a set a
particular tuple holds, since one can OFFSET, ORDER BY, and LIMIT;
however, I can't seem to find a function or "hidden field" that will
return this.

What I would like is something along these lines: I wish to ORDER BY
an ordinal field that is likely to be present, but may not be present,
and then by a unique value to ensure stability of ordering. Since the
ordinal may be absent, I'd like a running total on the side: For
example:

guys
name age
-------------------
bob 33
charlie 35
doug 28
ed 33

select name, age, running_total() from guys order by age, name
name age running_total()
-----------------------------------------
doug 28 1
bob 33 2
ed 33 3
charlie 35 4

I think I could do this by means of creating a temporary table within a
plpgsql function, but that seems awful heavy-duty. I have an inkling
that there may be an existing pg_ function or field, like oid, which I
might call to get this info. Thoughts?

Regards,

Randall

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Wei Weng 2003-04-17 18:30:27 Re: IN Qeury Problem
Previous Message Manfred Koizar 2003-04-17 16:52:21 Re: getting rid of "Adding missing FROM-clause entry...."