From: | "William Temperley" <willtemperley(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | percentile rank query |
Date: | 2008-04-10 14:06:18 |
Message-ID: | 439dc11e0804100706u16315a95hcd4a0c01cb64982d@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi all
I'm trying to calculate the percentile rank for a record based on a
'score' column, e.g. a column of integers such as:
23,77,88,23,23,23,12,12,12,13,13,13
without using a stored procedure.
So,
select count(*) as frequency, score
from scoretable
group by score
order by score
Yields:
frequency score
3 12
3 13
4 23
1 77
1 88
However I'd like this result set:
frequency score runningtotal
3 12 3
3 13 6
4 23 10
1 77 11
1 88 12
Where the running total is the previous frequency added to the current
frequency. Score order is significant.
So I can then do ((runningtotal-frequency)+(frequency/2))/(select
count(*) from scoretable) to give me the percentile rank for each
score.
Is this possible in one query? I just can't figure out how to get the
running total in a result set.
Thanks very much,
Will Temperley
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2008-04-10 14:23:10 | Re: visibility rule in a EXECUTE with multi sql |
Previous Message | Ivano Luberti | 2008-04-10 13:48:46 | Re: begin transaction locks out other connections |