Peer rows are matching rows when ORDER BY is specified.
Report by arnaud.mouronval@gmail.com, David G Johnston
Backpatch through 9.4
<firstterm>Window functions</firstterm> provide the ability to perform
calculations across sets of rows that are related to the current query
row. See <xref linkend="tutorial-window"> for an introduction to this
- feature.
+ feature, and <xref linkend="syntax-window-functions"> for syntax
+ details.
</para>
<para>
The default framing option is <literal>RANGE UNBOUNDED PRECEDING</>,
which is the same as <literal>RANGE BETWEEN UNBOUNDED PRECEDING AND
CURRENT ROW</>; it sets the frame to be all rows from the partition start
- up through the current row's last peer in the <literal>ORDER BY</>
- ordering (which means all rows if there is no <literal>ORDER BY</>).
+ up through the current row's last peer (a row that <literal>ORDER
+ BY</> considers equivalent to the current row, or all rows if there
+ is no <literal>ORDER BY</>).
In general, <literal>UNBOUNDED PRECEDING</> means that the frame
starts with the first row of the partition, and similarly
<literal>UNBOUNDED FOLLOWING</> means that the frame ends with the last
results if the <literal>ORDER BY</> ordering does not order the rows
uniquely. The <literal>RANGE</> options are designed to ensure that
rows that are peers in the <literal>ORDER BY</> ordering are treated
- alike; any two peer rows will be both in or both not in the frame.
+ alike; all peer rows will be in the same frame.
</para>
<para>
first <firstterm>peer</> row (a row that <literal>ORDER BY</> considers
equivalent to the current row), while a <replaceable>frame_end</> of
<literal>CURRENT ROW</> means the frame ends with the last equivalent
- peer. In <literal>ROWS</> mode, <literal>CURRENT ROW</> simply means
+ <literal>ORDER BY</> peer. In <literal>ROWS</> mode, <literal>CURRENT ROW</> simply means
the current row.
</para>
which is the same as <literal>RANGE BETWEEN UNBOUNDED PRECEDING AND
CURRENT ROW</>. With <literal>ORDER BY</>, this sets the frame to be
all rows from the partition start up through the current row's last
- peer. Without <literal>ORDER BY</>, all rows of the partition are
+ <literal>ORDER BY</> peer. Without <literal>ORDER BY</>, all rows of the partition are
included in the window frame, since all rows become peers of the current
row.
</para>