[<window_expression>] is used to further sub-partition the result and apply the window functions. There are two types of windows: Row Type and Range Type.
According to the JIRA at https://issues.apache.org/jira/browse/HIVE-4797, the rank(...), ntile(...), dense_rank(...), cume_dist(...), percent_rank(...), lead(...), lag(...), and row_number(...) functions do not support being used with a window expression yet.
For row type windows, the definition is in terms of row numbers before or after the current row. The general syntax of the row window clause is as follows:
ROWS BETWEEN <start_expr> AND <end_expr>
<start_expr> can be any one of the following:
- UNBOUNDED PRECEDING
- CURRENT ROW
- N PRECEDING or FOLLOWING
<end_expr> ...