On Tue, Jan 21, 2025 at 10:39 AM Tom Lane <t...@sss.pgh.pa.us> wrote:

> PG Doc comments form <nore...@postgresql.org> writes:
> > EXPECTED:
> > As shown here, the rank function produces a numerical rank for each
> distinct
> > PARTITION BY value in the current row's partition, using the order
> defined
> > by the ORDER BY clause. rank needs no explicit parameter, because its
> > behavior is entirely determined by the OVER clause.
>
> > ACTUAL:
> > As shown here, the rank function produces a numerical rank for each
> distinct
> > ORDER BY value in the current row's partition, using the order defined by
> > the ORDER BY clause. rank needs no explicit parameter, because its
> behavior
> > is entirely determined by the OVER clause.
>
> Hmm, I think the current text is correct, or at least more nearly
> correct than what you suggest.





>   Look at the example:
>
> <programlisting>
> SELECT depname, empno, salary,
>        rank() OVER (PARTITION BY depname ORDER BY salary DESC)
> FROM empsalary;
> </programlisting>
>
> <screen>
>   depname  | empno | salary | rank
> -----------+-------+--------+------
>  develop   |     8 |   6000 |    1
>  develop   |    10 |   5200 |    2
>  develop   |    11 |   5200 |    2
>  develop   |     9 |   4500 |    4
>  develop   |     7 |   4200 |    5
>  personnel |     2 |   3900 |    1
>  personnel |     5 |   3500 |    2
>  sales     |     1 |   5000 |    1
>  sales     |     4 |   4800 |    2
>  sales     |     3 |   4800 |    2
> (10 rows)
> </screen>
>
> The ranks are separate within each partition (depname), and
> within a partition rows having the same salary get the
> same rank.
>
>                         regards, tom lane
>
>
>

Reply via email to