percentile rank query - Mailing list pgsql-general

From William Temperley
Subject percentile rank query
Date
Msg-id 439dc11e0804100706u16315a95hcd4a0c01cb64982d@mail.gmail.com
Whole thread Raw
Responses Re: percentile rank query  (Osvaldo Rosario Kussama <osvaldo.kussama@gmail.com>)
List 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

pgsql-general by date:

Previous
From: Ivano Luberti
Date:
Subject: Re: begin transaction locks out other connections
Next
From: Tom Lane
Date:
Subject: Re: visibility rule in a EXECUTE with multi sql