SQL: DENSE_RANK с обязательным минимальным количество повторений рангов
Есть таблица магазинов (markets), с процентным показателем продаж (market_name, sales_percent). Необходимо заинсертить данные в новую таблицу, при этом добавив поле с рангом, относительно других магазинов.
select *,
case when sales_percent is not null then dense_rank() over(order by sales_percent) end sales_rank
into martkets_with_ranks
from markets
Пример: у нас 50 рангов, такой топ отфильтрованных магазинов и ранги соответственно запросу выше
| market_name | sales_percent | sales_rank |
|---|---|---|
| Магазин1 | 98% | 50 |
| Магазин2 | 97% | 49 |
| Магазин3 | 95% | 48 |
| Магазин4 | 94% | 47 |
| Магазин5 | 94% | 47 |
| Магазин6 | 92% | 46 |
| Магазин7 | 91% | 45 |
А необходимо, что бы два наивысших ранга, повторились минимум по 2 раза (соответственно примеру, это 50 и 49)
| market_name | sales_percent | sales_rank |
|---|---|---|
| Магазин1 | 98% | 50 |
| Магазин2 | 97% | 50 |
| Магазин3 | 95% | 49 |
| Магазин4 | 94% | 49 |
| Магазин5 | 94% | 49 |
| Магазин6 | 92% | 48 |
| Магазин7 | 91% | 47 |
Есть идеи, как можно реализовать ?