Re: BUG #12228: Primary use-case of PERCENT_RANK not supported

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #12228: Primary use-case of PERCENT_RANK not supported
Дата
Msg-id 8865.1418599857@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #12228: Primary use-case of PERCENT_RANK not supported  (jonlachlan@gmail.com)
Ответы Re: BUG #12228: Primary use-case of PERCENT_RANK not supported  (Jonathon Lachlan-Haché <jonlachlan@gmail.com>)
Список pgsql-bugs
jonlachlan@gmail.com writes:
> I'm using the 9.4 RC1 and trying out the WITHIN GROUP functions. I used a
> percentile_disc pattern successfully, however I think I came across a
> problem with using percent_rank(). Here is my SQL:

> SELECT percent_rank(datavalue) WITHIN GROUP (ORDER BY datavalue) as
> pct_rank, measureid
>  FROM measuredata
>  WHERE surveyyear=2013
>  GROUP BY measureid;

That query isn't very sensible: the direct argument of percent_rank() has
to be a constant over any one aggregation group, else the percentile
calculation is meaningless.

> I want to be able to run a query that programmatically displays the
> 'pct_rank' of datavalue.

I'm not 100% sure what you mean by that, but I suspect you are looking for
something closer to the basic percent_rank() window function, not the
hypothetical-set function.  Hypothetical-set functions are for computing
the measure that would be attributed to a row that's not actually present
in the data.  Moreover, since they're aggregates, they produce only one
output per GROUP BY group, and I don't understand what you mean by
"pct_rank of datavalue" at a group level.  Perhaps what you want is

SELECT percent_rank() OVER (PARTITION BY measureid ORDER BY datavalue) as
pct_rank, measureid
 FROM measuredata
 WHERE surveyyear=2013;

It could also be that what you're after will require doing a window
function like that in a sub-SELECT, and then grouping and/or aggregating
in the outer query.

            regards, tom lane

В списке pgsql-bugs по дате отправления:

Предыдущее
От: jonlachlan@gmail.com
Дата:
Сообщение: BUG #12228: Primary use-case of PERCENT_RANK not supported
Следующее
От: Andrew Sackville-West
Дата:
Сообщение: Re: regression, deadlock in high frequency single-row UPDATE