Overview of OLAP functionality

On-Line Analytical Processing (OLAP) offers the ability to perform complex data analysis within a single SQL statement, increasing
the value of the results, while improving performance by decreasing the amount of querying on the database. OLAP functionality
is made possible in SQL Anywhere through the use of extensions to SQL statements and window functions. These SQL extensions
and functions provide the ability, in a concise way, to perform multidimensional data analysis, data mining, time series analyses,
trend analysis, cost allocations, goal seeking, and exception alerting, often with a single SQL statement.

Extensions to the SELECT statement Extensions to the SELECT statement allow you to group input rows, analyze the groups, and include the findings in the final
result set. These extensions include extensions to the GROUP BY clause (GROUPING SETS, CUBE, and ROLLUP subclauses), and the
WINDOW clause.

The extensions to the GROUP BY clause allow you to partition the input rows in multiple ways, yielding a result set that concatenates
all of the different groups together. You can also create a sparse, multi-dimensional result set for data mining analyses
(also known as a data cube). Finally, the extensions provide sub-total and grand-total rows to make analysis more convenient. See GROUP BY clause extensions.

The WINDOW clause is used in conjunction with window functions to provide additional analysis opportunities on groups of input
rows. See Window functions.

Window aggregate functions Almost all of the SQL Anywhere aggregate functions support the concept of a configurable sliding window that moves down through the input rows as they are processed. Additional calculations can be performed on data in the window
as it moves, allowing further analysis in a manner that is more efficient than using semantically equivalent self-join queries,
or correlated subqueries.

For example, window aggregate functions, coupled with the CUBE, ROLLUP, and GROUPING SETS extensions to the GROUP BY clause,
provide an efficient mechanism to compute percentiles, moving averages, and cumulative sums in a single SQL statement that
would otherwise require self-joins, correlated subqueries, temporary tables, or some combination of all three.

You can use window aggregate functions to obtain such information as the quarterly moving average of the Dow Jones Industrial
Average, or all employees and their cumulative salaries for each department. You can also use them to compute variance, standard
deviation, correlation, and regression measures. See Window aggregate functions.

Window ranking functions Window ranking functions allow you to form single-statement SQL queries to obtain information such as the top 10 products
shipped this year by total sales, or the top 5% of salespersons who sold orders to at least 15 different companies. See Window ranking functions.