Explain the difference between RANK(), DENSE_RANK(), and ROW_NUMBER(), and provide a scenario where you would use each.