RANK returns an ordered ranking of rows based on the value_expression in the ORDER BY clause. All rows having the same value_expression value are assigned the same rank.
If n rows have the same value_expression values, then they are assigned the same rank, call it rank r. The next distinct value receives rank r +n. And so on.
Less formally, RANK sorts a result set and identifies the numeric rank of each row in the result. RANK returns an integer that represents the rank of each row in the result.