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 > > >