| The PostgreSQL 9.0 Reference Manual - Volume 1A - SQL Language Reference
by The PostgreSQL Global Development Group Paperback (6"x9"), 454 pages ISBN 9781906966041 RRP £14.95 ($19.95) Sales of this book support the PostgreSQL project! Get a printed copy>>> |
5.2.4 Window Function Processing
If the query contains any window functions (see
Window Functions,
section 7.19 Window Functions and
section 2.2.8 Window Function Calls), these functions are evaluated
after any grouping, aggregation, and HAVING filtering is
performed. That is, if the query uses any aggregates, GROUP
BY, or HAVING, then the rows seen by the window functions
are the group rows instead of the original table rows from
FROM/WHERE.
When multiple window functions are used, all the window functions having
syntactically equivalent PARTITION BY and ORDER BY
clauses in their window definitions are guaranteed to be evaluated in a
single pass over the data. Therefore they will see the same sort ordering,
even if the ORDER BY does not uniquely determine an ordering.
However, no guarantees are made about the evaluation of functions having
different PARTITION BY or ORDER BY specifications.
(In such cases a sort step is typically required between the passes of
window function evaluations, and the sort is not guaranteed to preserve
ordering of rows that its ORDER BY sees as equivalent.)
Currently, window functions always require presorted data, and so the
query output will be ordered according to one or another of the window
functions' PARTITION BY/ORDER BY clauses.
It is not recommendable to rely on this, however. Use an explicit
top-level ORDER BY clause if you want to be sure the
results are sorted in a particular way.
| ISBN 9781906966041 | The PostgreSQL 9.0 Reference Manual - Volume 1A - SQL Language Reference | See the print edition |