From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | oselemg(at)gmail(dot)com |
Cc: | pgsql-docs(at)lists(dot)postgresql(dot)org |
Subject: | Re: Typo on tutorial window page |
Date: | 2025-01-21 17:39:25 |
Message-ID: | 3359764.1737481165@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-docs |
PG Doc comments form <noreply(at)postgresql(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | David G. Johnston | 2025-01-21 17:39:58 | Re: Typo on tutorial window page |
Previous Message | Tom Lane | 2025-01-21 17:26:03 | Re: Request for Formal Syntax of WHERE Clause Conditions |