Analytic functions represent the state-of-the-art way of performing complex data analysis within a single SQL statement. In particular, an important class of analytic functions that has been frequently used in commercial systems to support OLAP and decision support applications is the class of window functions. A window function returns for each input tuple a value derived from applying a function over a window of neighboring tuples. However, existing window function evaluation approaches are based on a naive sorting scheme. In this paper, the authors study the problem of optimizing the evaluation of window functions. They propose several efficient techniques, and identify optimization opportunities that allow users to optimize the evaluation of a set of window functions.