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