Both RANK() and DENSE_RANK() provide ordered partition. The one and only difference between RANK() and DENSE_RANK() function is the fact that RANK() will assign non-consecutive ranks to the values in a set in the case of tie, which means that with RANK() there will be gaps between the integer values when they are common where as in DENSE_RANK no ranks are skipped if there are ranks with multiple items.